经典排序算法——归并排序
来源:互联网 发布:超好听网络歌曲 编辑:程序博客网 时间:2024/04/29 19:13
对于一个int数组,请编写一个归并排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
class MergeSort {public: int* mergeSort(int* A, int n) { if(A==NULL||n<2) return A; process(A,0,n-1); return A; } void process(int* A,int left,int right) { if(left>=right) return; int mid=left+(right-left)/2; //划分左右 process(A,left,mid); process(A,mid+1,right); //合并左右 merge(A,left,mid,right); } void merge(int* A,int left,int mid,int right) { int* temp=new int[right-left+1];//临时数组 int l=left,r=mid+1; int k=0; while(l<=mid && r<=right) //临时数组选取左、右子数组中较小的 { if(A[l]<A[r]) temp[k++]=A[l++]; else temp[k++]=A[r++]; } while(l<=mid) temp[k++]=A[l++];//将剩余的数直接复制到临时数组中 while(r<=right) temp[k++]=A[r++]; //将临时数组放回原数组相应位置 for (int i = 0; i <right-left+1; i++) {A[left + i] = temp[i];} delete[] temp; } };
1 0
- 经典排序算法——归并排序
- 经典排序算法——归并排序
- 经典算法学习——归并排序
- 经典算法--归并排序
- 经典排序算法之——归并排序
- 【经典排序算法】归并排序
- 排序算法—归并排序
- 排序算法—归并排序
- 经典排序算法--归并排序算法分析
- 经典算法之归并排序
- 经典排序算法之归并排序
- 经典排序算法 - 归并排序Merge sort
- 经典排序算法之归并排序
- 经典排序算法 - 归并排序Merge sort
- 经典算法学习:排序之归并排序
- 经典排序算法 - 归并排序Merge sort
- 经典排序算法----归并排序(稳定)
- 经典排序算法2:归并排序
- loadrunner Fast learning First Day
- 杭电oj 2012 素数判定
- BZOJ_P2152 聪聪可可(点分治)
- Problem E: C语言习题 矩形法求定积分
- Annotation--java注解
- 经典排序算法——归并排序
- Java 二维数组实现杨辉三角
- hdoj--2186--悼念512汶川大地震遇难同胞——一定要记住我爱你(模拟水题)
- ICMP协议
- DOM
- 内联函数 —— C 中关键字 inline 用法解析
- MySQL数据库总结(6)列类型及列的增删改
- hdoj 悼念512汶川大地震遇难同胞——一定要记住我爱你 2186 (模拟)
- caffe 输出重定向, 双重输出重定向