选择排序

选择排序

  /**
  * 选择排序
  * @method selectionSort
  * @for 
  * @param @param {Array,Function} {数组,控制升序降序(a,b) => a - b}
  * @return {Array} 排序结果
  */
  const selectionSort = (arr, fn) => {
    if(!arr)return "数组为空"
    if (arr.length <= 1) return arr

    fn = fn || ((a, b) => a - b) //默认升序
    for (let i = 0; i < arr.length - 1; i++) {
      let minIndex = i
      for (let j = i + 1; j < arr.length; j++) {
        if (fn(arr[minIndex], arr[j]) > 0) {
          minIndex = j
        }
      }
      if (minIndex !== i) {
        [arr[minIndex], arr[i]] = [arr[i], arr[minIndex]]
      }
    }
    return arr
  }

results matching ""

    No results matching ""