演算法之排序

2022-01-22 01:46:01 字數 1823 閱讀 9897

一:氣泡排序

1

void m_sort(long a, longn)2

14}15if(flat == 0) break;16}

17*/

18//

第二種寫法

19for(i = n -1 ; i>0; i--)

2029}30

if(flat == 0 ) break;31

}32 }

view code

二:插入排序

1

void x_sort(long a,longn)2

13a[j] = temp; 插入新位置14}

*/15

for(x = 1;x)

1621

}22 }

view code

三:堆排序

1

void swap(long a, int i, intj)2

7void precdown(long a,int i , intn)8

18if(a[child]<=tmp)

19else

2225

}26 a[parent] =tmp; 27}

28void heap_sort(long a,int

n) 29

35for(i = n-1;i>0;i--)

3640 }

view code

四:歸併排序

1

void merge(long a,long tmpa,int l,int r,int

rightend)

12//

也許左沒走完

13while( l <=leftend )

14 tmpa[tmp++] = a[l++];

15//

也許右邊沒走完

16while( r <=rightend)

17 tmpa[tmp++] = a[r++];

18//

再導回 a ,tmp此時已經越界,所以要先減再用

19for(int i=0;i)

20 a[rightend--] = tmpa[--tmp];21}

2223

//分治

24void msort(long a,long tmpa,int l,int

rightend)31}

3233

void merge_sort(long a,int

n)

view code

五:選擇排序

1

void x_sort(long a,longn)2

12swap(a,i,targer);13}

1415

16 }

view code

六:快速排序

1

void quick_sort(int a, int l, intr)2

7int x = l,y =r;

8int key =a[x];

9while(x

1015 a[x]=a[y];

16while(x < y && a[x] <=key)

1720 a[y] =a[x];21}

22 a[x] =key;

23 quick_sort(a,l,x-1

);24 quick_sort(a,y+1

,r);

25 }

view code

排序演算法之排序

private static void insertsort int ints 時間複雜度 o n 2 空間複雜度 o 1 private static void mergesort int ints,int left,int right private static void merge int ...

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...

演算法之排序演算法

1.概述 排序演算法是計算機技術中最基本的演算法,許多複雜演算法都會用到排序。儘管各種排序演算法都已被封裝成庫函式供程式設計師使用,但了解排序演算法的思想和原理,對於編寫高質量的軟體,顯得非常重要。本文介紹了常見的排序演算法,從演算法思想,複雜度和使用場景等方面做了總結。2.幾個概念 1 排序穩定 ...