1
、氣泡排序 bubble sort
最簡單的排序方法是氣泡排序方法。這種方法的基本思想是,將待排序的元素看作是豎著排列的「氣泡
」,較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個「氣泡
」序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。如果發現兩個相鄰元素的順序不對,即「輕
」的元素在下面,就交換它們的位置。顯然,處理一遍之後,「最輕
」的元素就浮到了最高位置;處理二遍之後,「次輕
」的元素就浮到了次高位置。在作第二遍處理時,由於最高位置上的元素已是「最輕
」元素,所以不必檢查。一般地,第
i遍處理時,不必檢查第
i高位置以上的元素,因為經過前面
i-1遍的處理,它們已正確地排好序。這個演算法可實現如下。
演算法如下:
/** *
氣泡排序
*@paramsrc
待排序陣列 */
voiddobubblesort(intsrc)
}printresult(i,src);
} }
2
、選擇排序 selection sort
選擇排序的基本思想是:對待排序的記錄序列進行
n-1遍的處理,第
1遍處理是將
l[1..n]
中最小者與
l[1]
交換位置,第
2遍處理是將
l[2..n]
中最小者與
l[2]
交換位置,
......,第i
遍處理是將
l[i..n]
中最小者與
l[i]
交換位置。這樣,經過
i遍處理之後,前
i個記錄的位置就已經按從小到大的順序排列好了。
當然,實際操作時,也可以根據需要,通過從待排序的記錄中選擇最大者與其首記錄交換位置,按從大到小的順序進行排序處理。
演算法如下:
/**
*選擇排序
*@paramsrc
待排序的陣列 */
voiddochoosesort(intsrc)
} src[samllestlocation]=src[i];
src[i]=temp;
printresult(i,src); }
}3、插入排序 insertion sort
插入排序的基本思想是,經過
i-1遍處理後
,l[1..i-1]
己排好序。第
i遍處理僅將
l[i]
插入l[1..i-1]
的適當位置,使得
l[1..i]
又是排好序的序列。要達到這個目的,我們可以用順序比較的方法。首先比較
l[i]
和l[i-1]
,如果l[i-1]≤ l[i]
騆[1..i]
已排好序,第
i遍處理就結束了;否則交換
l[i]
與l[i-1]
的位置,繼續比較
l[i-1]
和l[i-2]
,直到找到某乙個位置
j(1≤j≤i-1)
,使得l[j] ≤l[j+1]
時為止。
簡言之,
插入排序就是每一步都將乙個待排資料按其大小插入到已經排序的資料中的適當位置,直到全部插入完畢。插入排序方法分直接插入排序和折半插入排序兩種,這裡只介紹直接插入排序,折半插入排序留到「查詢
」內容中進行。圖1
演示了對
4個元素進行直接插入排序的過程,共需要
(a),(b),(c)
三次插入。
1 對4個元素進行插入排序
在下面的插入排序演算法中,為了寫程式方便我們可以引入乙個哨兵元素
l[0]
,它小於
l[1..n]
中任一記錄。所以,我們設元素的型別
elementtype
中有乙個常量
-∞,它比可能出現的任何記錄都小。如果常量
-∞不好事先確定,就必須在決定
l[i]
是否向前移動之前檢查當前位置是否為
1,若當前位置已經為
1時就應結束第
i遍的處理。另乙個辦法是在第
i遍處理開始時,就將
l[i]
放入l[0]
中,這樣也可以保證在適當的時候結束第
i遍處理。下面的演算法中將對當前位置進行判斷。
演算法如下:
/**
*插入排序
(while
迴圈實現)
*@paramsrc
待排序陣列 */
voiddoinsertsort1(intsrc)
src[j]=temp;
printresult(i+1,src); }
}/** *
插入排序
(for
迴圈實現)
*@paramsrc
待排序陣列 */
voiddoinsertsort2(intsrc)
else//
如果當前的數,不小前面的數,那就說明不小於前面所有的數, //
因為前面已經是排好了序的,所以直接通出當前一輪的比較
break; }
src[j]=temp;
printresult(i,src); }
}
經典排序演算法(Java版)
1 氣泡排序 bubble sort 最簡單的排序方法是氣泡排序方法。這種方法的基本思想是,將待排序的元素看作是豎著排列的 氣泡 較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個 氣泡 序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。...
經典排序演算法 java版
交換排序 氣泡排序 快速排序 選擇排序 直接選擇排序 堆排序 插入排序 直接插入排序 希爾排序 1.氣泡排序演算法的運作如下 從後往前 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元...
Java中的經典排序演算法
1 氣泡排序 bubble sort 最簡單的排序方法是氣泡排序方法。這種方法的基本思想是,將待排序的元素看作是豎著排列的 氣泡 較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個 氣泡 序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。...