一 插入排序
直接插入排序
根据顺序将未排序数组中的元素一一插入已排序好的数组中
function insert(arr){ var source = arr;
var result = [];
for(var i=0; i<source.length; i++){ //时间频度 n
if(i==0){ //n
result[0]=source[0] //1
} else{
for(var j=0; j<result.length; j++){ //n^2-1
if(source[i]<result[j]){ //n^2
result.splice(j, 0, source[i]); n^2
break;
} else {
if(j==result.length-1) { n^2
result[j+1]=source[i]; n^2
break;
}
}
}
}
}
return result; }
时间复杂度: O(n^2)
二 选择排序
二元选择排序
将代排序数组中的最大和最小值选出来分别移到数组的两端
function min-max(arr){
var minIndex, maxIndex;
for(var k=0; k<arr.length; k++){
if(k==0){
if(arr[k]<=arr[k+1]){
minIndex=k;
maxIndex=k+1;
}
} else{
if(k>=2){
if(arr[k]<min){
minIndex=k
} else(arr[k]>max){
maxIndex=k
}
}
}
}
return {min:min, max:max}
}
function select(arr){ var source=arr;
var result=[];
result.length=source.length;
var length=source.length;
for(var i=0; i<length/2; i++){
var min=min-max(arr).min;
var max=min-max(arr).max;
result[i]=min;
result[length-i-1]=max;
}
}