排序算法总结--C++代码实现

来源:互联网 发布:u盘检测工具 知乎 编辑:程序博客网 时间:2024/06/05 10:57

1.常见排序算法


2. 插入排序


2.1 直接插入排序

void print(int *arr, int nCount, int n=0){int i = 0;printf("%d==== ", n);while(i < nCount) printf("%2d  ", arr[i++]);printf("\n");}// Straight Insertion Sortvoid InsertSort(int* arr, int nCount){if (arr == NULL || nCount < 2){return;}for(int i = 1; i < nCount; i++){if(arr[i] < arr[i-1]){int t= arr[i];int j = i;while((j > 0) && (t <= arr[j-1])){arr[j] = arr[j-1];j--;}arr[j] = t;}}}


2.2 希尔排序 -- 插入

void print(int *arr, int nCount, int n=0){int i = 0;printf("%d==== ", n);while(i < nCount) printf("%2d  ", arr[i++]);printf("\n");}// ShellInsertSortvoid ShellInsertSort(int* arr, int nCount){if (arr == NULL || nCount < 2){return;}int dk = nCount/2;while(dk > 0){for(int i = dk; i < nCount; i++){if (arr[i] < arr[i-dk]){int t = arr[i];int j = i;while(j-dk>=0 && arr[j-dk]>t){arr[j] = arr[j-dk];j-=dk;}arr[j] = t;}print(arr,nCount,i);}print(arr,nCount,dk);dk = dk/2;}}



3. 选择排序

3.1直接选择排序

empty

3.2堆排序--选择 


4. 交换排序

4.1 冒泡排序

void print(int *arr, int nCount, int n=0){int i = 0;printf("%d==== ", n);while(i < nCount) printf("%2d  ", arr[i++]);printf("\n");} void BubbleSort(int *arr, int nCount) {for(int i = 0; i < nCount; i++){for(int j = 1; j < nCount-i; j++){if (arr[j-1] > arr[j]){arr[j-1] += arr[j];arr[j] = arr[j-1] - arr[j];arr[j-1] = arr[j-1] - arr[j];}}print(arr, 10, i);} } 

4.2 快速排序





0 0
原创粉丝点击