1. 插入排序
(θ(n^2))
insertion-sort(a)
for j ← 2 to length[a]
do key ← a[j]
△insert a[j] into the sorted sequence a[1..j-1]
i ← j-1
while i>0 and a[i]>key
do a[i+1]=a[i]
i ← i-1
a[i+1] ← key
2.氣泡排序(θ(n^2))
bubblesort(a)
for i ← 1 to length[a]
do for j ← length[a]downto i+1
do if a[j]
the exchange a[j] ←→ a[j-1]
3.合併排序(θ(nlgn))
呼叫方法:merge-sort(a,1,length[a])
merge-sort(a,p,r)
if p
then q ← [(p+r)/2]
merge-sort(a,p,q)
merge-sort(a,q+1,r)
merge(a,p,q,r)
#合併
merge(a,p,q,r)
n1 ← q-p+1
n2 ← r-q
create arrays l[1..n1+1] and r[1..n2+1]
for i ← 1 to n1
do l[i] ← a[p+i-1]
for j ← to n2
do r[q+j]
l[n1+1] ← ∞
r[n2+1] ← ∞
i ← 1
j ← 1
for k ← p to r
do if l[i]<=r[j]
then a[k]←l[i]
i ← i+1
else a[k]← r[j]
j ← j+1
4.堆排序
(θ(nlgn))
heapsort(a)
build-max-heap(a)
for i ← length [a] downto 2
do exchange a[1] ←→ a[i]
heapsize[a] ← heapsize[a]-1
max-heapify(a,i)
#保持堆的性質
(使以i為根的子樹成為最大堆)
max-heapify(a,i)
l ← left[i]
r ← right[i]
if l<= heap-size[a] and a[l]>a[i]
then largest ← l
else largest ← i
if r <= heap-size[a] and a[r]>a[i]
then largest ← r
if largest != i
#if a[i]最大則完成
then exchange a[i]←→a[largest]
max-heapify(a,largest)
#建堆build-max-heap(a)
heap-size[a] ← length[a]
for i ← length[a]/2 downto 1
do max-heapify(a,i)
5. 快速排序
(θ(n^2))
呼叫方法:quicksort(a,1,length[a])
quicksort(a,p,r)
if p
then q=partition(a,p,r)
quicksort(a,p,q-1)
quicksort(a,q+1,r)
#partition 對陣列a[p..r]進行就地重排:
partition(a,p,r)
x ← a[r]
i ← p-1
for j ← p to r-1
do if a[j]
<=x
then i ← i+1
exchange a[i] ←→ a[j]
echange a[i+1] ←→ a[r]
return i+1;
幾種常見排序演算法
幾種常見排序演算法 1氣泡排序 bubble sort 氣泡排序思路 將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i...
幾種常見排序演算法
1氣泡排序 bubble sort 氣泡排序思路 1.將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 2.對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i 0 i n...
幾種常見排序演算法
以下內容包括 氣泡排序,選擇排序,桶排序 一 氣泡排序 bubblesort public class bubblesort int temp 0 for int i 0 i1 i system.out.println arrays.tostring arr 用arrays類中的tostring方法...