算法入手:算法思想——实现方式——时间复杂度+空间复杂度
实现排序前的基本结构:
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)