演算法 排序專題

2021-07-09 05:35:02 字數 2403 閱讀 6897

快速排序(演算法導論版)

version1:左邊第乙個元素為主元

#include#include#includeusing namespace std;

int partition(int a, int left, int right)//

} swap(a[i], a[left]);

return i;

}void swap(int &x1, int &x2)

void quicksort(int a, int left, int right)

}int main()

version2:右邊最後乙個元素為主元

#include#include#includeusing namespace std;

int partition(int a,int left,int right)//

} swap(a[i + 1], a[right]); //這個版本的swap的是i+1 而不是左邊版本的i(因為右邊為主元的版本 i+1才是比主元大的「第乙個數字」,應該把它換到右邊)

return i + 1; //同上

}void swap(int &x1, int &x2)

void quicksort(int a, int left, int right)

}int main()

2.bis

#include//折半插入排序

#includeusing namespace std;

void bis(int a, const int left, const int right)//在lefr到i-1的地方 查詢i要插入的位置.

for (int k = i - 1; k >= low; k--)

a[low] = temp; }}

/*int main()

*/

3.氣泡排序
#include//氣泡排序

#includeusing namespace std;

void bubble(int a, int n)

if (exchange == false)

return; }}

/*int main()

*/

4.直接插入

#include//插入排序

#includeusing namespace std;

void insertsort(int a, const int left, const int right) while (j >= left && temp < a[j]);

a[j + 1] = temp;

} }}void insertsort_1(int a, const int left, const int right) while (back >= left && temp < a[back]);

a[back + 1] = temp;

} }}/*int main()

*/

5.歸併排序
#includeusing namespace std;

//將有二個有序數列a[first...mid]和a[mid...last]合併。

void mergearray(int a, int first, int mid, int last, int temp)

while (i <= m)

temp[k++] = a[i++];

while (j <= n)

temp[k++] = a[j++];

for (i = 0; i < k; i++)

a[first + i] = temp[i];

}void mergesort(int a, int first, int last, int temp)

}/*bool mergesort(int a, int n)

*//*int main()

; int b[10];

mergesort(a, 0, 9, b);

for (int i = 0; i != 10; i++)

cout << b[i] << " ";

return 0;

}*/

6.希爾排序
#include#includeusing namespace std;

void shellsort(int a,int left,int right)

while (j >= left &&temp < a[j]);

a[j + gap] = temp;

} } while (gap>1);

}/*int main()

*/

排序演算法專題

氣泡排序bubblesort 選擇排序selectionsort 插入排序insertsort 歸併排序mergesort 快速排序quicksort 堆排序heapsort 氣泡排序 相鄰元素兩兩比較,將通過比較得到的最大元素放在最後 選擇排序 總是選最小的元素放在當前有序序列的末尾,選n 1次 ...

專題七 排序演算法

1 基本思想 每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在待排序的數列的最前,直到全部待排序的資料元素排完。2 排序過程 示例 初 始 關鍵字 49 38 65 97 76 13 27 49 第一趟排序後 13 38 65 97 76 49 27 49 第二趟排序後 13 27 ...

排序部分專題

各種排序思路總結 氣泡排序 1 外層迴圈將排序好的除去 2 內層迴圈將沒排好的陣列進行前後比較大小,每經過乙個迴圈,最大的數都在最後面 穩定排序,時間複雜度o n2 選擇排序 先找到第乙個數後的最小值,並將其與之交換 內層迴圈為找到最小值 不穩定,o n2 插入排序 1 外層迴圈是將排好續的陣列保留...