冒泡排序,選擇排序,插入排序
阿新 • • 發佈:2017-11-16
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; }
代碼都經過我親自測試,可以完成對數組進行排序
冒泡排序,選擇排序,插入排序