面试复习(C++)之归并排序
2015-10-07 10:19
555 查看
#include <iostream> #include<stdlib.h>//引入malloc using namespace std; void Merge(int *a,int p,int q,int r)//p为起始,q为中,r为末 { int *left=NULL; int *right=NULL; int n1=q-p+1; int n2=r-q; int i; int j; left=(int *)malloc(sizeof(int)*(n1)); right=(int *)malloc(sizeof(int)*(n2)); for(i=0;i<n1;i++) { left[i]=a[p+i]; } for(j=0;j<n2;j++) { right[j]=a[q+1+j]; } i=j=0; int k=p; while(i<n1&&j<n2) { if(left[i]<=right[j]) { a[k++]=left[i++]; } else { a[k++]=right[j++]; } } for(;i<n1;i++) { a[k++]=left[i]; } for(;j<n2;j++) { a[k++]=right[j]; } } void Mergesort(int *a,int p,int r) { int q; if(p<r) { q=(int)((p+r)/2); Mergesort(a,p,q); Mergesort(a,q+1,r); Merge(a,p,q,r); } } int main() { int n=5; int a[10]; cout<<"Input Num"<<endl; for(int i=0;i<n;i++) { cin>>a[i]; } Mergesort(a,0,n-1); for(int j=0;j<n;j++) { cout<<a[j]<<" "; } return 0; }
相关文章推荐
- C++实现链队列
- C++实现循环队列
- c/c++区别
- C++实现顺序栈
- C++实现链栈
- C++成员函数和构造函数
- 怎么样Eclipse IDE for C/C++ Developers正确编译GTK规划?(解决)
- C语言输入输出函数详解
- Leetcode NO.45 Jump Game II
- Leetcode NO.55 Jump Game
- Leetcode NO.278 First Bad Version
- 南邮NOJ 1029 短语搜索
- 重拾C/C++ 使用Struct结构建立简单的链表
- cpp字符串流
- cpp类的初始化参数列表
- C++基础简述题
- 360笔试题——找老乡
- 查找一:C++顺序表查找
- C语言中的多维数组
- C++实现多项式操作及其加减乘除