정렬 0, 1, 2

접근법 1:
새로운 어레이 방식

function sort(arr) {
  let zero = [];
  let one = [];
  let two = [];

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === 0) {
      zero.push(arr[i]);
    } else if (arr[i] === 1) {
      one.push(arr[i]);
    } else if (arr[i] === 2) {
      two.push(arr[i]);
    }
  }

  return zero.concat(one).concat(two);
}

console.log(sort([0, 1, 2, 2, 1, 0]));


접근 2:
동일한 이전 어레이 유지 및 스왑 수행

function sort_1(a) {
  let lo = 0;
  let hi = a.length - 1;
  let mid = 0;
  let temp = 0;

  while (mid <= hi) {
    if (a[mid] == 0) {
      temp = a[lo];
      a[lo] = a[mid];
      a[mid] = temp;
      lo++;
      mid++;
    } else if (a[mid] == 1) {
      mid++;
    } else {
      temp = a[mid];
      a[mid] = a[hi];
      a[hi] = temp;
      hi--;
    }
  }

  return a;
}
console.log(sort_1([0, 1, 2, 2, 1, 0]));

좋은 웹페이지 즐겨찾기