#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 而同一層的子節點...