选择排序

/**
 * @function 选择排序
 * @desc 遍历数组,设置最小值的索引为 0,如果取出的值比当前最小值小,就替换最小值索引,遍历完成后,将第一个元素和最小值索引上的值交换。如上操作后,第一个元素就是数组中的最小值,下次遍历就可以从索引 1 开始重复上述操作。
 * 概括:取出每一次的最小值,然后置换
 * 时间复杂度:n-1 + n-2 + ... + 1 = n(n+1)/2  =>  O(n*n)
 * @param {原数组} arr 
 * @returns 处理过后的原数组
 */
function selection (arr) {
  if (!Array.isArray(arr)) {
    return []
  }
  for (let i = 0; i < arr.length; i++) {
    debugger
    let minIndex = i
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j
      }
    }

    let temp = arr[minIndex]
    arr[minIndex] = arr[i]
    arr[i] = temp
  }

  return arr
}

console.log(selection([8, 10, 3, 2, 9, 5, 4, 0, 1]))

选择排序

上一篇:面试Java开发者时常问的15个Java多线程和并发问题


下一篇:python多线程示例1(工作太忙,仅仅作为记录)