选择排序

原理:

首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。

思路:

  • 在长度为N的数组中,第一次遍历,我们可以先假设第一个数为最小的,从n-1个数开始遍历,找到最小的和第一个数交换。
  • 第二次,假设第二个数为最小的,从n-2 个数开始遍历,找到最小的数和第二个数交换。
    .......
  • 重复以上操作直到第 n-1 次遍历最小的数和第 n-1 个数交换,排序完成。

实现代码如下

   function selectionSort(arr) {
        const length = arr.length; 
        for (let i = 0; i < length - 1; i++) {
           let minIndex = i;  //假设第i次循环,第i个数为最小的
          for (let j = i + 1 ; j < length ; j++) {
            if (arr[j] < arr[minIndex]) { 
          //假设最小的数值大于arr[j] ,令 minIndex = j 保存最小的元素索引
               minIndex = j;
            }
          }
         if (minIndex !== i) { 
          //交换
           const temp = arr[i];
           arr[i] = arr[minIndex];
           arr[minIndex] = temp;
         }
    
      }
          return arr;
   }

时间复杂度: 最好和最坏的情况都是O(n2)
空间复杂度: O(1)

posted @ 2021-06-21 15:21  某某雅  阅读(38)  评论(0)    收藏  举报