插入排序
直接插入排序基本思想是每一步將乙個待排序的記錄,插入到前面已經排好序的有序序列中去,直到插完所有元素為止。
private
static
void
insertionsort
(int
array)
//然後將其放到找到的位置上
array[j]
= temp;
}for
(int i =
0; i < array.length; i++
)}
選擇排序
選擇排序的思想就是從迴圈n次,第一次將角標0及其後元素中的最小值放在角標0處,第二次將角標1及其後元素中的最小值放在角標1處,以此類推,直至最後
private
static
void
selectsort
(int
array)}if
(i != min)
}for
(int i =
0; i < array.length; i++
)}
氣泡排序
氣泡排序的思想是比較相鄰的元素,如果第乙個比第二個大,就交換他們兩個位置,以前特喜歡氣泡排序,因為**簡單。。。
private
static
void
sbubblesort
(int
array)}}
for(
int i =
0; i < array.length; i++
)}
對於像這三種排序大家可以debug執行,一步步看看是如何交換資料的,就立馬能清楚了
冒泡、選擇、插入排序都需要 o(n2) 時間級別。一般不會選擇氣泡排序,雖然氣泡排序書寫簡單,但是平均效能是沒有選擇排序和插入排序好的。
選擇排序把交換次數降低到最低,但是比較次數還是挺大的。當資料量小,並且交換資料相對於比較資料更加耗時的情況下,可以應用選擇排序。
在大多數情況下,假設資料量比較小或基本有序時,插入排序是三種演算法中最好的選擇。
資料結構 排序總結 冒泡 插入 選擇 歸併
在我們看到,無論是氣泡排序,插入排序或者是選擇排序,時間複雜度都可能是是o n 2 為什麼這三種排序時間複雜度都有可能是n 2而二路歸併是o nlog n 讓我們先看看前三種排序方法 通過以上排序方式,我們都不難發現,這些排序其實是在做兩種事情,乙個是比較,乙個是按照比較的結果做出位置的變換.其中位...
冒泡,插入,選擇排序
經典的排序演算法,此文章介紹三個 氣泡排序 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。public void bubblesort int a while iswrap for int ...
資料結構與演算法(十) 冒泡 插入 選擇排序演算法
演算法基本思想 假設原始序列為l,長度為n 三種排序演算法的比較 import copy def bubblesort l,n 氣泡排序 每次選出最大元素放在末尾 l 待排序列表 n 列表長度 for i in range n flag false for j in range n i 1 if l...