排序演算法 交換演算法

2022-07-20 06:33:10 字數 1431 閱讀 6999

1.先定義一些基礎函式

1 #include 2

3using

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.氣泡排序

1

void bubblesort(int *arr, intn)2

11}12}

13 }

3.快速排序

1

int _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...