本文转载自微信公众号《JS日报》,作者灰灰。转载本文请联系JS每日一问公众号。一、什么是选择排序(Selectionsort)是一种简单直观的排序算法。不管输入什么数据,它的时间复杂度都是O(n2),所以在使用的时候,数据量越小越好,它的基本思想是:先在未排序的数组中找到最小(或最大)的元素,然后存放在数组的开头,然后继续从剩余的未排序的元素中寻找最小(或最大)的元素,然后放入已排序的中。这样推导序列的末尾,直到所有元素都排序完毕。比如一个数组是56,12,80,91,29,排序过程如下:第一次遍历时,从下标1开始的位置是56首先找到key值最小的记录12,与下标为0的密钥56交换位置。此时数组为12,56,80,91,20,第二次遍历时,从下标为2的位置开始,即56,找到最小值20,与关键字交换位置56带下标2,当数组为12、20、80、91、56时,第三次遍历时,从带下标3的位置开始,即80,求最小值56,交换关键字80下标为3的位置,此时数组为12、20、56、91、80进行第四次遍历时,从下标4为91的位置开始,找出最小的是80,和下标4的关键字91交换位置,此时排序完成,成为一个有序数组2.如何实现从上面可以看出,对于一个有n条记录的无序列表,遍历n-1次,第i次从无序列表中的第i条记录开始,找出后序关键字中最小的记录为then放到第i个位置,直到从第n个和第n-1个元素中选出最小的一个,放到第n-1个位置如下图动画所示:用代码表示如下:functionselectionSort(arr){varlen=arr.length;varminIndex,temp;for(vari=0;i
