选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

1. 算法步骤

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。

2. 动图演示selectionSort.gif

3.代码实现

  1. function selectionSort(arr) {
  2. if (!Array.isArray(nums)) {
  3. throw new Error('请输入一个数组')
  4. }
  5. let len = nums.length
  6. if (len < 2) {
  7. return nums
  8. }
  9. let i, j, temp, minIndex
  10. for (i = 0; i < len - 1; i++) {
  11. // 先选出小的
  12. minIndex = i
  13. for (j = i + 1; j < len; j++) {
  14. if (nums[j] < nums[minIndex]) {
  15. minIndex = j
  16. }
  17. }
  18. temp = nums[minIndex]
  19. nums[minIndex] = nums[i]
  20. nums[i] = temp
  21. }
  22. return nums
  23. }