練習一:排序
Opened this issue · 0 comments
Ponchimeow commented
請寫一個 function sort,接收一個陣列並且回傳由小到大排序後的陣列。(禁止使用內建函式 sort)
提示:如果你已經會找第 n 小的值了,試著把這個概念應用到這題上。
sort([ 6, 8, 3, 2]) 預期回傳值:[2, 3, 6, 8]
sort([ 1, 2, 7 ,5]) 預期回傳值:[1, 2, 5, 7]
function sort(arr) {
let res = [];
for (let i = 1; i <= arr.length; i += 1) {
res.push(findNthMin(arr, i));
}
return res;
}
function findNthMin(arr, n) {
for (let i = n; i > 0; i -= 1) {
if (i === 1) {
return arr[findMin(arr)];
}
let low = findMin(arr);
arr = arr.slice(0, low).concat(arr.slice(low + 1, arr.length));
}
return arr[findMin(arr)];
}
function findMin(arr) {
let lowest = 0;
for (let i = 0; i < arr.length; i += 1) {
if (arr[i] < arr[lowest]) {
lowest = i;
};
}
return lowest;
}