归并排序
来源:互联网 发布:淘宝超级搜索 编辑:程序博客网 时间:2024/06/06 03:48
基本思想:将待排序的元素序列分成两个长度相等的子序列,为每一个子序列排序,然后将他们 合并成一个序列。合并两个子序列的过程称为两路归并.
void _Merge(int*arr, int*tmp, int begin1, int end1, int begin2, int end2){ int index = 0; while (begin1 <= end1&&begin2 <= end2) { if (arr[begin1] < arr[begin2]) { tmp[index++] = arr[begin1++]; } if (arr[begin2]<arr[begin1]) { tmp[index++] = arr[begin2++]; } } while (begin1 <= end1) { tmp[index++] = arr[begin1++]; } while(begin2 <= end2) { tmp[index++] = arr[begin2++]; }}void _MergeSort(int*arr,int* tmp, int begin, int end){ if (begin >= end) { return; } int middle = begin + ((end - begin) >> 1); _MergeSort(arr, tmp,begin, middle); _MergeSort(arr,tmp, middle+1, end); //[begin,mid-1][mid,end]全部划分完成之后开始进行合并 _Merge(arr, tmp, begin, middle, middle + 1, end); memcpy(arr + begin, tmp, sizeof(int)*((end - begin) + 1));}void MergeSort(int*arr, int n){ int *tmp = new int[n]; _MergeSort(arr, tmp, 0, n-1); delete[]tmp;}
阅读全文
1 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- nsis制作一个外部exe启动器(exe嵌套exe)
- openvas漏扫部署
- VC++获取系统信息/获取OS/获取MAC/获取本地IP/判断是否为网吧
- scikit-learn 梯度提升树(GBDT)调参小结
- ftp服务器的建立(windows&linux)
- 归并排序
- vue-resource的使用
- Maven项目中依赖其他工程(打成war包)
- 利用Java中的Calendar获取当前的时间
- 谈谈我用Unity5的AssetBundle踩到的几个坑
- springmvc常用注解标签详解
- web安全与字体——刘尧博士讲座--PDF安全
- 怎么使用wireshark
- 使用Storm实现实时大数据分析