选择排序

  1. 思路:不断遍历数组,将最小的往前放
    1. 第一遍:从i=0 遍历数组,找到最小的,放在i=0的位置
    2. 第二遍:从i=1 遍历数组,找到最小的,放在i=1 的位置
    3. ……
    4. 重复上述过程,直到比较到最后一位停止
    5. 返回排序好的数组

选择排序的实现

  1. 测试多次,排序一个长度为10000的数组,时间平均为 0.215s,比冒泡排序快

Snipaste_2022-05-08_20-34-19.png

  1. /**
  2. * 1.从i=0遍历数组,将最小值放在i=0位置
  3. * 2.从i=1遍历数组,将最小值放在i=2位置
  4. * ...
  5. * 4.重复上述过程,直到i=nums.length-2
  6. */
  7. function selectSort(nums) {
  8. // 设置一个起始最小的索引值
  9. let indexMin;
  10. // 中间临时变量
  11. let temp;
  12. for (let i = 0; i < nums.length - 2; i++) {
  13. indexMin = i;
  14. for (let j = i; j < nums.length - i; j++) {
  15. if (nums[indexMin] > nums[j]) {
  16. indexMin = j;
  17. }
  18. }
  19. if (indexMin !== i) {
  20. temp = nums[i];
  21. nums[i] = nums[indexMin];
  22. nums[indexMin] = temp;
  23. }
  24. }
  25. return nums;
  26. }
  27. // let arr = [5, 4, 3, 2, 1];
  28. // console.log(selectSort(arr));
  29. function createArr(n) {
  30. let arr = [];
  31. for (let i = n; i > 0; i--) {
  32. arr.push(i);
  33. }
  34. return arr;
  35. }
  36. let arr = createArr(10000);
  37. console.log(selectSort(arr));

Snipaste_2022-05-08_20-31-57.png