inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

CS_전공지식_스페셜미션

w3w
1

function quickSort(arr, left, right) {
  if (left < right) {
    let pivot = divide(arr, left, right);
    quickSort(arr, left, pivot - 1);
    quickSort(arr, pivot + 1, right);
  }
}

function divide(arr, left, right) {
  let pivot = arr[left].count; // count를 기준으로 오름차순 정렬
  let leftStartIndex = left + 1;
  let rightStartIndex = right;

  while (leftStartIndex <= rightStartIndex) {
    while (leftStartIndex <= right && arr[leftStartIndex].count <= pivot) {
      leftStartIndex++;
    }

    while (rightStartIndex >= left + 1 && arr[rightStartIndex].count >= pivot) {
      rightStartIndex--;
    }

    if (leftStartIndex <= rightStartIndex) {
      swap(arr, leftStartIndex, rightStartIndex);
    }
  }

  swap(arr, left, rightStartIndex);
  return rightStartIndex;
}

function swap(arr, index1, index2) {
  let temp = arr[index1];
  arr[index1] = arr[index2];
  arr[index2] = temp;
}


//객체들
let user1 = {
  name: "홍길동",
  count: 5
};

let user2 = {
  name: "임꺽정",
  count: 4
};

let user3 = {
  name: "이순신",
  count: 3
};

let user4 = {
  name: "나",
  count: 1
};

let user5 = {
  name: "짱구",
  count: 5
};

//테스트 코드
let arr = [user1, user2, user3, user4, user5];

console.log("===== 정렬 전 =====");
console.log(arr);

quickSort(arr, 0, arr.length - 1);

//나의 출석 수를 변경
arr[0].count += 4;

console.log("===== 정렬 후 =====");
console.log(arr);

실행결과 캡처:

image

 

알고리즘 · 자료구조

답변 0