归并排序C++实现——基于数组的
来源:互联网 发布:网络安全教育简报 编辑:程序博客网 时间:2024/06/11 02:27
归并排序C++实现——基于数组的
/关于归并排序理论知识网上应该也很详细了,我在这里就分享一下自己的代码实现,有错误的地方欢迎大家指出/
#include <iostream>//能不用using namespace std 就尽量不用;using std::cout;using std::endl;using std::cin;//high is the index of array//对已排好的两个数组进行合并void merge(int *arr, int low, int mid, int high){ int i = low, j = mid + 1; int count = 0; int *data = new int[high - low + 1]; for (i = low, j = mid + 1; i <= mid && j <= high;) { if (arr[i] <= arr[j]) { data[count++] = arr[i]; i++; } else { data[count++] = arr[j]; j++; } } if (i <= mid) { for (; i <= mid; i++) { data[count++] = arr[i]; } } else { for (; j <= high; j++) { data[count++] = arr[j]; } } i = low; for (int k = 0; k < count&&i<=high; k++,i++) { arr[i] = data[k]; } delete[] data;}//分而治之,将长数组一直进行二等分,当分到只剩一个时返回void Msort(int* arr, int low, int high){ if (low >= high) { return; } int mid = (low + high) / 2; Msort(arr, low, mid); Msort(arr, mid+1, high); merge(arr, low, mid, high);}int main(){ int len; cout<< "Please enter the length of array you want to sort : "; cin >> len; int *arr = new int[len]; cout << "The data is : "; for (int i = 0; i < len; i++) { cin >> arr[i]; } Msort(arr, 0, len - 1); cout << "After sort : "; for (int i = 0; i < len; i++) { cout << arr[i] << " "; } cout << endl; system("pause"); return 0;}
阅读全文
0 0
- 归并排序C++实现——基于数组的
- 基于归并排序的实现与应用
- 数组归并排序算法的一种实现
- C++:探究纯虚析构函数以及实现数组的快速排序与链表的归并排序
- c实现数组归并
- 基于数组的堆排序算法的C语言实现
- 简单的归并排序—Java实现
- C语言实现的归并排序
- 归并排序的C代码实现
- 归并排序的C语言实现
- C语言二分归并排序的实现
- C语言归并排序算法的实现
- 归并排序的C语言实现
- 数组的归并排序
- 数组的归并排序
- 数组的归并排序
- 数组排序——归并排序
- 数据结构-数组排序-二路归并-循环实现-C语言
- 第十一周 项目4(2)
- Android使用SVG的一点小坑
- 更该Docker的默认存储目录
- PHP知识的总结(第一篇)环境的配置
- Kinect2使用命令
- 归并排序C++实现——基于数组的
- python数据分析(1)-numpy产生随机数
- 用Safari调试iOS下的页面
- iOSNSInputStream流上传
- 示例:PHP使用socket协议实现的即时通信功能
- ThreadPoolExecutor.Worker内部类分析
- 最大子序列和问题O(N)
- UIApplication
- new/delete 和 malloc/free