정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.
주의사항
삽입정렬로 오름차순을 나열해야한다.
Advanced
insertionSort 함수의 두 번째 인자로 callback 함수를 받아서, 그 함수의 리턴값을 기준으로 요소들을 정렬해 보세요.
const insertionSort = function (arr) {
let answer = arr
for(let i = 0; i < arr.length; i++){
let tmp = arr[i];
for(j = i - 1; j >=0; j--){
if(arr[j] > tmp){
arr[j+1] = arr[j]
} else {
break;
}
}
arr[j+1] = tmp
}
return answer;
};
초고수 문제풀이
const insertionSort = function (arr, transform = (item) => item) {
let sorted = [arr[0]];
for (let i = 1; i < arr.length; i++) {
if (transform(arr[i]) >= transform(sorted[i - 1])) {
sorted.push(arr[i]);
} else {
for (let j = 0; j < i; j++) {
if (transform(arr[i]) <= transform(sorted[j])) {
const left = sorted.slice(0, j);
const right = sorted.slice(j);
sorted = left.concat(arr[i], right);
break;
}
}
}
}
return sorted;
};