資料結構複習 交換排序原理及C 實現

2022-07-08 21:48:12 字數 2138 閱讀 9910

兩兩比較key值,如果發生逆序(排列的順序與期望的順序相反)就交換,知道所有物件都排序完畢!常見的3種交換排序演算法:氣泡排序,shaker排序和快速排序。

設待排序列中有 n 個物件, 首先比較物件v[n-1]和v[n-2], 如果v[n-1]

此種排序是對氣泡排序的改進,氣泡排序每次只能從乙個方向進行遍歷,而shaker排序每次遍歷包括兩個方向,先從前向後,再從後往前雙向交替,效率上較氣泡排序有所改進,**如下:

快速排序採用的是一種分治的思想:取待排序物件序列中的某個物件為基準(任意取乙個),按照其他物件與該基準物件的大小關係,將整個序列劃分為左右兩個子串行,其中左側子串行中所有物件值都小於或者等於基準值,右側物件序列中的所有物件值都大於基準值,然後對左右這兩個子串行重複上述操作(遞迴),直至子串行為空為止!還是比較容易理解,這裡就不畫圖了。

1

#ifndef exchangesort_h

2#define exchangesort_h

3 #include 4 #include 5

using

std::vector;

6using

std::cout;

7using

std::endl;

8 template 9

class

exchangesort

1023

24/*

25* bubblesort functions

26*/

27void

bubblesort()

2833

34/*

35* shakersort functions

36*/

37void

shakersort()

3851 }//

end for

52 right =shift;

53for (i = right; i > left; --i)//

from right to left

5460 }//

end for

61 left =shift;

62 }//

end while63}

6465

6667

/*68

* quick sort

69*/

70void quicksort(int left, int

right)

7182

if (i != left) quicksort(left, i - 1

);83

if (j != right) quicksort(j + 1

, right);84}

85/*

86* exchange two elements of list

87*/

88void swap(int i, int

j)89

9495

/*96

* display the sorted result

97*/

98void

out()

99105 cout <

106}

107};

108109

#endif

110111

112//

exchangesorttest

113 #include "

exchangesort.h

"114 #include 115

using

namespace

std;

116117

const unsigned numele = 8

;118

int data[numele] = ;

119120

121int

main()

122

左飛:c++資料結構原理與經典問題求解

資料結構 交換排序

交換排序的基本思想是 兩兩比較待排序記錄的關鍵字,如果發生逆序 即排列順序與排序後的次序正好相反 則交換之,直到所有記錄都排好序為止。基本思路 每趟不斷將記錄兩兩比較,並按 前小後大 或 前大後小 規則交換。優點 每趟結束時,不僅能擠出乙個最大值到最後面位置,還能同時部分理順其他元素 一旦下趟沒有交...

c 資料結構 交換排序(起泡排序)

1.演算法思想 兩兩比較相鄰的關鍵碼,如果反序,則要交換位置,直到沒有反序記錄為止 2.每一趟起泡排序前,令exchange的初值 0 在以後的排序過程中,只要有記錄交換 exchange就不為0 所以,一趟比較結束時,可以通過exchange的值是否為0來判斷是否有記錄交換,從而判別整個氣泡排序的...

資料結構 排序之交換排序

本節將兩種交換排序氣泡排序和快速排序 氣泡排序是最簡單的交換排序方法,比較相鄰兩個記錄的關鍵字,將大的放到右邊,小的放到左邊,如圖所示 從而使關鍵字小的左移 大的右移 每一次迴圈最右邊的必定是關鍵字最大的元素,外面再加一層迴圈即可得到有序序列。實現 include using namespace s...