归并排序
来源:互联网 发布:阿里金融云解决方案 编辑:程序博客网 时间:2024/05/22 12:38
只贴代码:
#include <iostream>using namespace std;void Merge(int *a,int start,int mid,int end){ int i=0,j=0,k=0; int len1 = mid - start+1; int len2 = end - mid; int *L = new int[len1]; int *R = new int[len2]; j=0; for(i=start;i<=mid;i++) L[j++] = a[i]; j=0; for(;i<=end;i++) R[j++] = a[i]; for(k = start,i=0,j=0;i<len1&&j<len2;k++) { if(L[i] < R[j]) { a[k] = L[i++]; } else a[k] = R[j++]; } if(i<len1) for(;i<len1;) a[k++] = L[i++]; if(j<len2) for(;j<len2;) a[k++] = R[j++];}void MergeSort(int * a,int start,int end){ if(start < end) { int mid = (start+end) / 2; MergeSort(a,start,mid); MergeSort(a,mid+1,end); Merge(a,start,mid,end); }}void PrinfArray(int *a,int len){ for(int i=0;i<len;i++) cout<<a[i]<<" "; cout<<endl;}int main(){ int a[]={3,2,1,4,5,6}; int len = sizeof(a)/sizeof(int); MergeSort(a,0,len-1); PrinfArray(a,len); cout << "Hello world!" << endl; return 0;}
方法2:
void MergeSort1(int *a ,int *copyArray,int start,int end){ if(start == end) { copyArray[start] = a[start]; return ; } int len = (end - start)/2; MergeSort1(copyArray,a,start,start+len); MergeSort1(copyArray,a,start+len+1,end); ///前半段的最后一个 int i= start +len; ///后半段的最后一个 int j= end; int index = end; while(i>=start && j>=start+len+1) { if(a[i]>a[j]) copyArray[index--] = a[i--]; else copyArray[index--] = a[j--]; } while(i>=start) { copyArray[index--] = a[i--]; } while(j>=start+len+1) copyArray[index--] = a[j--];}void MergeSort1(int * a,int len){ if(a == NULL || len < 0) return ; int * copyArray = new int[len]; for(int i=0;i<len;i++) copyArray[i] = a[i]; MergeSort1(a,copyArray,0,len-1);}
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 如何创建守护进程
- NYOJ-最大值和最小值
- Android 4.2 上Wi-Fi Display(Miracast)的开启和使用 无线显示
- Android系统Camera录像过程分析
- STL源码剖析——容器配接器之queue
- 归并排序
- 29短信拦截
- 【进化版】三角形外心坐标和外接圆半径
- shell中的内建命令, 函数和外部命令
- java学习笔记day7
- linux系统调用fork()总结(二)
- IOS学习笔记(十一)之IOS开发之表视图(UITableView)的基本介绍(一)
- 电路交换,报文交换与分组交换
- NYOJ-快速查找素数