C++_归并排序
来源:互联网 发布:爱拍录屏软件 编辑:程序博客网 时间:2024/05/18 08:29
//合并有序数组
//合并例子
void MemeryArray(int a[], int n, int b[],int m, int c[]){int i,j,k;i=j=k=0;while(i<n && j<m){if(a[i]<b[j]){c[k++] = a[i++];}else{c[k++]=b[j++];}}while(i<n){c[k++]=a[i++];}while(j<n){c[k++] = b[j++];}}
//排序需要调用的如下
//排序调用
bool MergeSort(int a[], int n){int *p = new int[n];if(p==NULL){return false;}mergesort(a,0,n-1,p); //用n-1是因为 合并的时候用的是 "<=" 而不是 "<"delete[] p;return true;}
//数组按照中值,左右执行递归
void mergesort(int a[],int first,int last,int temp[]){if(first<last){int mid = (first+last)/2;mergesort(a,first,mid,temp);mergesort(a,mid+1,last,temp);mergearray(a,first,mid,last,temp);}}
//最后对数组进行合并
void mergearray(int a[], int first, int mid, int last, int temp[]) {int i=first, j = mid+1;int m = mid, n =last;int k=0;while(i<=m&&j<=n){if(a[i]<=a[j]){temp[k++]=a[i++];}else{temp[k++] = a[j++];}}while(i<=m){temp[k++] = a[i++];}while(j<=n){temp[k++]=a[j++];}for(i=0;i<k;i++){a[first+i] = temp[i];}}
- C++_归并排序
- 数据结构(C#)_排序算法(归并排序)
- 数据结构_归并排序C语言源代码
- C++_归并排序(纯C版)
- 排序算法-归并排序_归并排序
- 05_归并排序
- 06_归并排序
- 排序算法_归并排序
- 归并排序(C/C++)
- 再写_归并排序
- 算法导论_归并排序
- JAVA_算法_归并排序
- 归并排序(C)
- 归并排序 --- C语言版
- 归并排序C语言
- 【C++】归并排序
- 归并排序C语言版
- 归并排序(C语言版)
- android支持html的<input type="file">标签
- JNI 传递数据
- nologging
- Java Base64 加密解密
- 8#9 - 多校6
- C++_归并排序
- 颜色分割(待)
- java POST method
- 0808leetcode刷题总结
- 编译安装mod_jk on centOS
- XML和实体序列化和反序列化
- window下为apache注册服务
- 轻松解决GHOST XP不能安装IIS组件的小问题
- PHP中try{}catch{}的具体用法详解