js 排序 冒泡排序,选择排序,插入排序

冒泡排序:  

对数组的中的数据,依次比较相邻两数的大小。

如果前面的数据大于后面的数据,就交换这两个数。

时间复杂度O(n^2) 
 1 function bubble(array){
 2     var temp;
 3     for(var i=0; i<arr.length; i++){
 4         for(var j=0; j<arr.length; j++){
 5             if(arr[j]>arr[j+1]){
 6                 temp = arr[j+1];
 7                 arr[j+1] =arr[j];
 8                 arr[j]=temp;
 9             }
10         }console.log(arr);
11     }
12 }//冒泡排序

选择排序:

首先从原始数组中选择一个最小的数据,和第一个位置1的数据交换。

再从剩下的n-1个数据中选择次小的数据,将其和第二个位置的数据交换。

不断重复,知道最后两个数据完成交换。

时间复杂度O(n^2)
function selectionSort(array){
    var min,temp;
    for(var i=0; i<array.length-1; i++){
        min=i;
        for(var j=i+1; j<array.length; j++){
            if(array[j]<array[min]){
                min=j;
            }
        }
        swap(array,min,i);
            
    }
        console.log(array);
}//选择排序
function swap(array,i,j){
    var temp =array[i];
    array[i]=array[j];
    array[j]=temp;
}//两个数字交换  

插入排序:

首先对前两个数据从小到大比较。

接着将第三个数据与排好的前两个数据比较,将第三个数据插入合适的位置。以此类推。

(插入排序有两个循环,外循环将数组挨个移动,内循环将对外循环选中的元素及他前面的数进行比较。)

时间复杂度O(n^2) 

 1 function insertSort(arr){
 2     var temp, j;
 3     for(var i=1; i<arr.length; i++){
 4         temp =arr[i];
 5         j=i;
 6         while(j>0 && arr[j-1]>temp){
 7             arr[j]=arr[j-1];
 8             j--;
 9         }
10         arr[j]=temp;
11 
12     }
13         
14 }

 

posted @ 2015-07-26 19:08  xxza  阅读(333)  评论(0编辑  收藏  举报