1.先定義一些基礎函式
1 #include 23using
namespace
std;45
void _swap(int& a, int&b)611
12int
main()13;
15int n = sizeof(a)/sizeof(a[0
]);16
17bubblesort(a, n); //具體演算法見後面章節
18quicksort(a, n);
19insetsort(a, n);
20shellsort(a, n);
21selectsort(a, n);
22heapsort(a, n);
23mergesort(a, n);
2425
for(int i = 0; i < n; i++)
2629 cout <3031
32while(1
);33
34return0;
35 }
2.氣泡排序
1void bubblesort(int *arr, intn)2
11}12}
13 }
3.快速排序
1int _part(int *arr, int start, int
end)210
11while(start < end && arr[start] <= arr[mid]) //
此處 arr[start] <= arr[mid] 或是 arr[start] < arr[mid] 效果相同,無影響
1215
16if(start 1720}21
22_swap(arr[start], arr[mid]);
2324
return
start;25}
2627
void _quicksort(int *arr, int start, int
end)
2833
34int mid =_part(arr, start, end);
35 _quicksort(arr, start, mid - 1
);36 _quicksort(arr, mid + 1
, end);37}
3839
void quicksort(int *arr, int
n)40
快速排序演算法是使用最廣泛的一種的演算法,標準stl庫中的sort演算法就使用了快速排序演算法,但是,不是單純的使用了快速排序這一種演算法,而是多種演算法混合使用的一種演算法,以快速排序演算法為主,後續章節會在慢慢介紹。
金鑰交換演算法
使用對稱加密演算法時,金鑰交換是個大難題,所以diffie和hellman提出了著名的diffie hellman金鑰交換演算法。diffie hellman金鑰交換演算法原理 1 alice與bob確定兩個大素數n和g,這兩個數不用保密 2 alice選擇另乙個大隨機數x,並計算a如下 a gx ...
金鑰交換演算法
使用對稱加密演算法時,金鑰交換是個大難題,所以diffie和hellman提出了著名的diffie hellman金鑰交換演算法。diffie hellman金鑰交換演算法原理 1 alice與bob確定兩個大素數n和g,這兩個數不用保密 2 alice選擇另乙個大隨機數x,並計算a如下 a gx ...
交換演算法引起的快速排序錯誤
前兩天手寫快速排序,最後得到的結果是錯誤的而且還錯的非常奇怪。輸入的待排序陣列是 int a 10 最後得到的結果是 002 0006 080 上網看了看別人的 發現我寫的快速排序的演算法邏輯是沒有錯誤的,難道是交換元素時用的演算法不對?我用的交換演算法是異或交換,就是不用中間變數那種 void s...