[인프런 워밍업클럽 CS 2기] 특별 미션

[인프런 워밍업클럽 CS 2기] 특별 미션

특별 미션)  실수로 워밍업 클럽 출석을 빼먹었는데 우연히 데이터를 수정할 수 있는 권한이 주어졌습니다.
러너분의 이름(name)과 출석수(count)가 저장된 배열에서 여러분(나)의 데이터를 퀵정렬을 이용해
오름차순 정렬하고 가장 첫 번째 데이터인 여러분의 출석수를 변경하도록 코드를 작성해주세요. 
(퀵정렬 구현 부분도 변경)

 

// 퀵 정렬 구현
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;
    let leftStartIndex = left + 1;
    let rightStartIndex = right;

    while (leftStartIndex <= rightStartIndex) {
        while (leftStartIndex <= right && arr[leftStartIndex].count <= pivot) {
            leftStartIndex++;
        }
        
        while (rightStartIndex > left && 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 = 5

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

// 출력 결과

image

댓글을 작성해보세요.

채널톡 아이콘