var $ = [44, 80, 7, 0, 88, 53, 86, 71, 93, 19, 99, 32, 71, 71, 86, 6, 97, 4, 37, 36, 66, 98, 59, 38, 34, 74, 26, 93, 85, 80,
55, 2, 60, 24, 69, 3, 62, 81, 67, 37, 50, 47, 20, 30, 70, 20, 93, 80, 88, 33, 83, 22, 35, 66, 56, 95, 17, 81, 23, 91, 39, 60,
70, 77, 31, 62, 28, 18, 54, 4, 8, 68, 100, 90, 50, 55, 77, 23, 62, 66, 39, 33, 79, 79, 82, 18, 43, 90, 53, 40, 31, 39, 66, 68,
50, 47, 33, 33, 1, 27];
var c = ($.length - 1) / 2;
var d = [];
var f;
var g;
var h = $.length - 1;
var i = 0

$.sort(function(a, b) {
if(a > b) return i+1;
if(a === b) return i;
if(a < b) return i-1;
});

function e() {
for ( f = 0; f < h; f++) {
for ( g = 0; g < c; g++) {
if (g * 2 === $[f]) {
d.push($[f]);
}
}
}
}
e();
console.log(d); //[0, 2, 4, 4, 6, 8, 18, 18, 20, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 44, 50, 50, 50, 54, 56, 60, 60,
62, 62, 62, 66, 66, 66, 66, 68, 68, 70, 70, 74, 80, 80, 80, 82, 86, 86, 88, 88, 90, 90, 98]



너무 심플해서 주석이 필요없을거같긴한데...

  1. $는 짝수와 홀수가 무작위로 있는 배열 ㅇㅇ
  2. 일단 for loop를 최적화하기 위해 오름차순으로 정렬해서 배열 마지막값을 max값으로 가져옴. for loop는 max만큼만 도니까 딱 필요한 만큼만 도는거지
  3. e 함수는 배열의 인자 갯수만큼 하나하나 돌면서,,,,
  4. e가 한번 돌 때마다 그 안에서 또 g가 2씩 최대50번 증가하는 for loop가 돌아. g는 2씩 증가하기 때문에 무적권 짝수만 돌겠지? g가 존나 돌다가 배열 인자와 일치하는 값이 있으면
  5. 그 값을 d라는 배열에 넣어줌 ㅇㅇ 결국 d에는 2의 배수값만 담기기 때문에 모두 짝수인거지
  6. 마지막으로 콘솔 호출해보면 보다시피 짝수만 깔끔하게 오름차순으로 담김 ㅇㅇ
  7. 100개의 숫자를모두 검사하는 데 필요한 최대연산은...
  8. 100 * 50 = 5000번인듯