选择排序是一种非常稳定的排序,不管给什么数据,最后的复杂度都是O(N*N),而且非常好理解,如果数据量比较小,可以试着用用。
思路:
1)扫描数组,找出最小的一个数的索引,然后把数放在第一位。
2)然后接着找
感觉我写的思路只有我自己看得懂。
还是看代码来得实在。
var selectionSort=function(arr){
var len=arr.length;
var index,temp;
// 数组中有n个数就必须要选择n-1个数进行对比
// 下面的j会加一个一,所以这里不用循环所有的数字
for(var i=0;i<len-1;i++){
// 存储索引值
index=i;
// 我们上面已经把第一个数存为索引值了,所以和索引值对比的必须应该是下一个数字,所以是i+1
for(var j=i+1;j<len;j++){
// 如果选择的数小于索引值的数,则索引值改变,直至找到最小数的索引值
if(arr[j]<arr[index]){
index=j;
}
}
// 把找到的最小的索引值的数与第一个数交换,并且进行下一轮循环
// 如果他们两个一样,说明最小的已经在第一位了,直接进行下一轮循环就好了
if(index!=i){
temp=arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
}
return arr;
};
var array=[1,2,4,7,4,1];
console.log(selectionSort(array));
网友评论