冒泡,插入,选择,归并,快速排序的C++实现
来源:互联网 发布:mac系统优化工具 编辑:程序博客网 时间:2024/06/05 16:34
#include <iostream>#include <ctime>using namespace std;void bubbleSort(int *arr, int len) { if(arr == NULL) return; for (int i = 0; i < len; ++i) { int sorted_flag = 1; for (int j = 0; j < len - i - 1; ++j) { if(arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; sorted_flag = 0; } } if(sorted_flag == 1) break; }}void insertSort(int* arr, const int len) { if(arr == NULL) return; for (int i = 0; i < len; ++i) { int j; int temp = arr[i]; for (j = i; j > 0 ; --j) { if(arr[j-1] > temp) { arr[j] = arr[j-1]; } else { break; } } arr[j] = temp; }}void selectSort(int * arr, const int len) { if(arr == NULL) return; for (int i = 0; i < len; ++i) { int min_index = i; for (int j = i+1; j < len; ++j) { if(arr[min_index] > arr[j]) min_index = j; } int temp = arr[min_index]; arr[min_index] = arr[i]; arr[i] = temp; }}int quickSort(int * arr, int left, int right) { int l = left, r = right, key = arr[left]; while(l < r) { while(l <= r && arr[l] <= key) l ++; while(r >= l && arr[r] >= key) r --; if(l < r) { int temp = arr[l]; arr[l] = arr[r]; arr[r] = temp; } } if(l == r || r == l-1) { arr[left] = arr[r]; arr[r] = key; } return r;}void partition(int arr[], int left, int right) { if(arr == NULL || left >= right) return; int mid = quickSort(arr, left, right); partition(arr, mid + 1, right); partition(arr, left, mid - 1);}void mergeSort(int n[], int start, int end, int* temp) { if(n == NULL) return; if(start < end) { int mid = (start + end) >> 1; if(mid != start) { mergeSort(n, start, mid, temp); mergeSort(n, mid+1, end, temp); } for(int i = 0, l = start, r = mid+1; i <= end; i++) { if (r > end || l <= mid && n[l] <= n[r]) temp[i] = n[l++]; else temp[i] = n[r++]; } for (int i = start; i <= end; ++i) { n[i] = temp[i - start]; } }}void before_print(int * arr, const int len) { cout << "before sorting: "; for (int j = 0; j < len; ++j) { cout << arr[j] << ' '; } cout << endl;}void after_print(int * arr, const int len) { cout << "after sorting: "; for (int j = 0; j < len; ++j) { cout << arr[j] << ' '; } cout << endl;}int main() { srand((unsigned) time(0)); const int len = 50; const int factor = len * 5; int * arr = new int[len]; for (int j = 0; j < len; ++j) { arr[j] = rand() % factor; } before_print(arr, len); int *temp = new int[len]; mergeSort(arr, 0, len-1, temp); after_print(arr, len); return 0;}
0 0
- 插入,归并,快速,冒泡,shell,选择排序 用c实现
- 冒泡,插入,选择,归并,快速排序的C++实现
- c排序算法:选择、冒泡、插入、快速、归并、堆排序
- C 各种排序(选择/冒泡/快速/插入/希尔/归并/堆)
- js实现冒泡、选择、插入、归并、快速排序算法
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 冒泡、选择、插入、归并、快速排序代码
- 插入 | 希尔 | 冒泡 | 快速 | 选择 | 归并排序
- 冒泡、鸡尾酒、选择、插入、归并、快速排序的C++程序
- 冒泡、选择、快速、插入、希尔、归并排序算法的小结
- 几种基本排序的实现:选择排序,冒泡排序,插入排序,堆排序,快速排序,归并排序
- c语言简单实现 冒泡,插入,选择,归并排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 6种排序算法的简洁实现:冒泡、选择、插入、归并、快速、堆
- Java实现冒泡排序、快速排序、选择排序、插入排序和归并排序
- C++实现冒泡排序,选择排序,插入排序,快速排序,归并排序
- 选择排序、冒泡排序、插入排序、基数排序、快速排序、归并排序完整C++实现
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- Leetcode 160. Intersection of Two Linked Lists
- 菜鸟第一篇文章,用于自勉。
- DX名词解释:深度缓存(depth buffer)
- 策略模式
- Android1.6 启动init.c分析
- 冒泡,插入,选择,归并,快速排序的C++实现
- jQuery 事件机制源代码分析1——jQuery事件机制整体架构
- css
- C语言内存分配问题和C语言中的内存
- Linux驱动开发、19-I2C子系统之客户驱动分析与移植
- ubutu安装配置jdk1.8
- 第十四周项目60-两个成员的类模版
- Card2D
- BMP 和 JPEG