一. 选择排序
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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。