資料結構 排序

2022-07-16 07:27:10 字數 2127 閱讀 7666

1 #include 2 #include 3

using

namespace

std;4//

降序排5

void swap(int &a,int &b)611

12//

氣泡排序

13//

版本a14

void bubblesort(vector &mvec)

1524}25

}26//版本b:注意j從後向前迴圈

27void bubblesort1(vector &mvec)

2837}38

}39//版本c:避免不必要的迴圈

40void bubblesort2(vector &mvec)

4154}55

}56}57

58int

main()59;

61bubblesort2(mvec);

62for(auto &mem:mvec)

63 cout<"";

64 cout<65return0;

66 }

1

//簡單選擇排序

2void selectsort(vector &mvec)313

if(maxi!=i)

14swap(mvec[maxi],mvec[i]);15}

16}1718

19int

main()20;

22//

bubblesort2(mvec);

23selectsort(mvec);

24for(auto &mem:mvec)

25 cout<"";

26 cout<27return0;

28 }

注意:不需要呼叫swap(),適用於「記錄少,基本有序的情況」。

1

//直接插入排序

2void insertsort(vector &mvec)315

}16}17

18int

main()19;

21//

bubblesort2(mvec);

22//

selectsort(mvec);

23insertsort(mvec);

24for(auto &mem:mvec)

25 cout<"";

26 cout<27return0;

28 }

1

//堆排序:注意:不計mvec[0]2//

已知記錄mvec中中的關鍵字除mvec[s]之外均滿足堆的定義

3void heapadjust(vector &mvec,int s,intm)4

15 mvec[s]=temp; //

插入16}17

void heapsort(vector &mvec)

1824

for(int i=len;i>1;--i)

2529}30

//快速排序

31int partition(vector &mvec,int lo,int

hi)32

43return lo; //

最終lo和hi值相等;mvec[lo]==mvec[hi]==pikey44}

45void qsort(vector &mvec,int lo,int

hi)4654}

55//

快排主函式

56void quiksort(vector &mvec)

5761

6263

intmain()64;

66//

bubblesort2(mvec);

67//

selectsort(mvec);

68//

insertsort(mvec);

69//

heapsort(mvec);

70quiksort(mvec);

71for(auto &mem:mvec)

72 cout<"";

73 cout<74return0;

75 }

資料結構 排序

小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...

資料結構 排序

郝斌版 資料結構 學習筆記 冒泡 公升序,12比,大放後面,再23比,直至最大的在最後面 插入 2,3,4,依次插入值,保證插入值後的序列為有序的 選擇 後面所有的最小值依次排到最前 快速排序 歸併排序 22排,44排,88排.排序演算法標準 時間,空間,穩定性 排序和查詢的關係 排序是查詢的前提,...

資料結構 排序

1.希爾排序 shellsort 增量序列d n為要排序數的個數 void shellinsertsort int a,int n,int dk n個要排序的數,dk是增量 2 堆排序 已知h s m 除了h s 外均滿足堆的定義 調整h s 使其成為大頂堆.即將對第s個結點為根的子樹篩選,para...