【选择排序】
- 算法思想:
先找到最小的数放在第一个位置,然后依次找到第二、第三...小的数依次放置在第二、第三...定位位置上
- 具体实现:
this.selectionSort=function(){
var length=array.length,
indexMin;
for(var i=0;i<length-1;i++){
indexMin=i;
for(var j=i;j<length;j++){
if(array[indexMin]>array[j]){
indexMin=j;
}
}
}
if(i!==indexMin){
swap(array,i,indexMin);
}
}
完整实现:
function swap(array,i,j){
var aux=array[i];
array[i]=array[j];
array[j]=aux;
}
function ArrayList(){
var array=[];
this.insert=function(item){
array.push(item);
};
this.toString=function(){
return array.join();
};
this.selectionSort=function(){
var length=array.length,
indexMin;
for(var i=0;i<length-1;i++){
indexMin=i;
for(var j=i;j<length;j++){
if(array[indexMin]>array[j]){
indexMin=j;
}
}
if(i!==indexMin){
swap(array,i,indexMin);
}
}
}
}
function createNonSortedArray(size){
var array=new ArrayList();
for(var i=size;i>0;i--){
array.insert(i);
}
return array;
}
array=createNonSortedArray(5);
console.log(array.toString());
array.selectionSort();
console.log(array.toString());
算法复杂度:
时间:O(n^2)
空间:O(1)