Ponchimeow/Practice

練習一:排序

Opened this issue · 0 comments

請寫一個 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;
}