1. 程式人生 > >冒泡排序,選擇排序,插入排序

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

rtb break 簡單的 return 最小 時間 最簡 min election

從今天開始希望自己的博客可以持續的更新起來,由於本人能力有限,所以有些內容可能會有疏漏或者不全面,希望大家可以指出來,讓我們一起學習,一起進步。

今天的內容是最簡單的三個排序算法,冒泡排序,選擇排序,插入排序,它們的時間復雜度都是O(N^2)。

冒泡排序:首先第一個數與第二個數比較,如果前面的大於後面的就交換兩個數,然後第二個與第三個比較,直到比較到最後,此時最後一個數為數組最大值,然後循環次步驟,第二次比較到倒數第二位,這樣經過兩次循環最後兩位就排好了,經過N次循環,數組就拍好了

選擇排序:從數組中選擇出最小的一個數,交換這個數和數組第一個數,這樣第一個數就排好了,然後從第二個數到最後一個數中再選出最小的與第二個數交換,這樣操作N次,數組排好順序。

插入排序:首先比較數組第二個數和第一個數的大小,將小的放到前面。然後讓第三個數依次與第二個數和第一個數比較,找到第三個數插入的位置,使得前三個數字有序,然後是第四位,如此循環,直到最後,數排好順序。

下面上代碼:由於我是學習前端的所以代碼用JavaScript語言描述

//冒泡排序
function sortBubble(array){
    var length=array.length;
    var cache;
    for(var j=length-1;j>0;j--){
        for(var i=0;i<j;i++){
            if(array[i]>array[i+1]){
                cache
=array[i]; array[i]=array[i+1]; array[i+1]=cache; } } } return array; } 
//選擇排序
function sortSelection(array){
    var length=array.length;
    var currentMin,cache;
    for(var j=0;j<length;j++){
        currentMin=j;
        for(var i=j+1;i<length;i++){
            
if(array[i]<array[currentMin]) currentMin=i; } cache=array[j]; array[j]=array[currentMin]; array[currentMin]=cache; } return array; }
//插入排序
function sortInsert(array){
    var length=array.length;
    var cache;
    for(var i=1;i<length;i++){
        for(var j=i-1;j>0;j--){
            if(array[i]<array[j]){
                cache=array[i];
                array[i]=array[j];
                array[j]=cache;
                i=j;
            }else{
                break;
            }
        }
    }
    return array;
}

代碼都經過我親自測試,可以完成對數組進行排序

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