一. 挑选排序
1.基本思想
找到数组最小的元素,将它和数组红第一个元素交流位置,接下来,在剩下的元素中找到最小的元素,将它与数组的第二个元素交流位置,来去云云,直到将全部数组排序。基本点就是不断地挑选盈余元素当中的最小者。
2.特性
运转时候和输入无关。
关于长度为N的数组,挑选排序须要约莫N2/2次比较和N次交流数据挪动是起码的
交流次数和数组的大小是线性关系。
运用javascript完成的结果
function select(array){
var len=array.length;
for(var i=0;i<len-1;i++){ //这里之所以是len-1,是因为到最后两个元素,交流位置,全部数组就已排好序了。
var minnum=array[i];
for(var j=i+1;j<len;j++){ // j=i+1是把与本身比较的状况给省略掉
if(array[j]<minnum){
var c;
c=minnum;
minnum=array[j]; //交流两个值
array[j]=c;
}
}
array[i]=minnum;
}
return array;
}
二、插进去排序
1.基本思想
将一个元素插进去到别的已有序的牌中的恰当位置,因而其他一切元素在插进去之前都向右挪动一名,为新元素腾出空间。
2.特性
插进去排序所需的时候取决于输入中元素的初始递次,一个有序的序列比随机递次的序列消费的时候更少。
关于随进分列的长度为N且主键不反复的数组,最坏状况下须要输入N2/2
function insert(array) {
for (var i = 1; i < array.length; i++) {
var key = array[i];
var j = i - 1;
while (j >= 0 && array[j] > key) {
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
return array;
}