shaker 排序法 改良的氣泡排序 C

2021-08-11 07:22:20 字數 1285 閱讀 4867

#include#include/*

shaker 排序法-改良的氣泡排序

採用雙向進行:

先讓氣泡排序由左向右進行,再來讓氣泡排序由右往左進行 ,如此完成一次排序的動作,

而您必須使用left與right兩個旗標來記錄左右兩端已排序的元素位置。

如:乙個排序的例子如下所示:

排序前:45

1977

8113

2818

1977

11往右排序:19

4577

1328

1819

7711 [81]

向左排序:[11] 19

4577

1328

1819

77 [81]

往右排序:[11] 19

4513

2818

19 [77

7781]

向左排序: [11

13] 19

4518

2819 [77

7781]

往右排序: [11

13] 19

1828

19 [45

7777

81]向左排序: [11

1318] 19

1928 [45

7777

81]往右排序: [11

1318] 19

19 [28

4577

7781]

向左排序: [11

1318

1919] [28

4577

7781]

如上所示,括號中表示左右兩邊已排序完成的部份,當left > right時,則排序完成。

*/void swap(int &a, int &b)

void shake_bubsort(int *num, int n)

}for (j = right; j >= left + 1; j--)

right--;

left++;

if (right

< left)

break;

printf("%d次:", count++);

for (int k = 0; k < n; k++)

printf("\n");

}}

int main()

; shake_bubsort(num, 10);

system("pause");

return 0;

}

改良 氣泡排序演算法

最近講第二個大課題 陣列。講到陣列,肯定不可避免的就要講到兩個排序演算法了,冒泡演算法首當其衝。整理了一下氣泡排序的內容,我跟學生說 要你們掌握兩個東西,乙個是演算法思想,乙個是核心 演算法思想如下 1.將相鄰兩個數比較,將小 大 的調到前頭。最後排序結果,從小到大 從大到小 每輪比較後,最大 小 ...

詳解氣泡排序和對其優化的Shaker 排序

顧名思義,就是排序時,最大的元素會如同氣泡一樣移至右端,其利用比較相鄰元素的方法,將大的元素交換至右端,所以大的元素會不斷的往右移動,直到適當的位置為止。基本的氣泡排序法可以利用旗標的方式稍微減少一些比較的時間,當尋訪完陣列後都沒有發生任何的交換動作,表示排序已經完成,而無需再進行之後的迴圈比較與交...

排序法 改良的選擇排序(C)

heap排序法使用heap tree 堆積樹 樹是一種資料結構,而堆積樹是乙個二元樹,也就是每乙個父節點最多只有兩個子節點 關於樹的詳細定義還請見資料結構書籍 堆積樹的 父節點 若小於子節點,則稱之為最小堆積 min heap 父節點若大於子節點,則稱之為最大堆積 max heap 而同一層的子節點...