js 排序 冒泡排序,選擇排序,插入排序

冒泡排序:  數組

對數組的中的數據,依次比較相鄰兩數的大小。spa

若是前面的數據大於後面的數據,就交換這兩個數。code

時間複雜度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 }//冒泡排序

選擇排序:blog

首先從原始數組中選擇一個最小的數據,和第一個位置1的數據交換。排序

再從剩下的n-1個數據中選擇次小的數據,將其和第二個位置的數據交換。io

不斷重複,知道最後兩個數據完成交換。console

時間複雜度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;
}//兩個數字交換  

插入排序:function

首先對前兩個數據從小到大比較。class

接着將第三個數據與排好的前兩個數據比較,將第三個數據插入合適的位置。以此類推。select

(插入排序有兩個循環,外循環將數組挨個移動,內循環將對外循環選中的元素及他前面的數進行比較。)

時間複雜度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 }
相關文章
相關標籤/搜索