幾種常見的排序演算法

2021-06-27 16:49:40 字數 2173 閱讀 6193

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方法...