(演算法)學習JavaScript資料結構與演算法——氣泡排序
阿新 • • 發佈:2018-12-12
演算法入手:演算法思想——實現方式——時間複雜度+空間複雜度
實現排序前的基本結構:
function ArrrayList(){
var array=[];
this.insert=function(item){
array.push(item);
};
this.toString=function(){
return array.join();
}
}
氣泡排序:
- 基本思想:
比較任何兩個相鄰的項,如果前一個比後一個大,則交換位置
- 實現的方式:
this.bubbleSort=function(){ var length=array.length; for(var i=0;i<length;i++){ for(var j=0;j<length-1;j++){ if(array[j]>array[j+1]){ swap(array,j,j+1); } } } }
交換位置:
function swap(array,i,j){
var aux=array[i];
array[i]=array[j];
array[j]=aux;
}
完整程式碼和測試:
//交換位置 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.bubbleSort=function(){ var length=array.length; for(var i=0;i<length;i++){ for(var j=0;j<length-1;j++){ if(array[j]>array[j+1]){ swap(array,j,j+1); } } } } } function createNonSortedArray(size){ var array=new ArrayList(); for(var i=size;i>0;i--){ array.insert(i); } return array; } var array=createNonSortedArray(5); console.log(array.toString()); array.bubbleSort(); console.log(array.toString());
對冒泡的改進:
this.modifiedbubbleSort=function(){
var length=array.length;
for(var i=0;i<length;i++){
for(var j=0;j<length-1-i;j++){
if(array[j]>array[j+1]){
swap(array,j,j+1);
}
}
}
}
時間複雜度和空間複雜度:
時間:O(n^2)
空間:O(1)