c++ 归并排序
来源:互联网 发布:关于所有淘宝软件 编辑:程序博客网 时间:2024/06/05 05:36
/*归并排序(从小到大)把数组分为两部分,分别对两个部分排序后进行合并,对两个部分排序时,把每个部分又分为两个部分...(递归)合并:假设A、B为两堆面朝上的扑克牌,A、B均是小牌在上大牌在下每次从A、B的顶层牌中取出较小的,如果其中一堆牌取完了,把另一堆剩下的牌一次性取出*/
<pre name="code" class="cpp">#include<iostream>using namespace std;void merge(int a[],int left,int p,int right){int tt=0;int b[10];int i=left,j=p+1;int n=right-left+1;while(tt<n){if(a[i]<a[j]){b[tt++]=a[i++];}else {b[tt++]=a[j++];}if(i==p+1){ for(;j<=right;j++) b[tt++]=a[j];}if(j==right+1){ for(;i<=p;i++) b[tt++]=a[i];}}j=0;for(i=left;i<=right;i++) a[i]=b[j++];}void mergeSort(int a[],int left,int right){if(right==left){ //cout<<"hello"<<right<<endl;return ;}int p=(left+right)/2;mergeSort(a,left,p);mergeSort(a,p+1,right);merge(a,left,p,right);}int main(){int a[10]={1,4,2,3,6,5,10,9,7,8};//int a[5]={5,4,1,90,3};mergeSort(a,0,9); for(int i=0;i<10;i++) cout<<a[i]<<' '; cout<<endl; return 0;}
运行结果:
1 2 3 4 5 6 7 8 9 10
0 0
- 归并排序(C/C++)
- 归并排序(C)
- 归并排序 --- C语言版
- C++_归并排序
- 归并排序C语言
- 【C++】归并排序
- 归并排序C语言版
- 归并排序(C语言版)
- 归并排序(c++)
- 归并排序C语言
- C语言 归并排序
- 归并排序 C语言数据结构
- 归并排序 c语言实现
- 归并排序(C语言)
- 读书笔记—C 归并排序
- 归并排序C语言实现
- 归并排序C语言实现
- 归并排序C语言代码
- 聚类分析(1):基本概念和算法
- Spring MVC学习总结(9)——Spring MVC整合swagger自动生成api接口文档
- Block使用总结
- maven报错Missing artifact jdk.tools:jdk.tools:jar:1.8解决方案
- Oracle数据库创建表空间和用户及删除数据库(用户)
- c++ 归并排序
- JAVA多态理解(包含他人经典例子)
- 获取android系统服务信息dumpsys,监视android系统systrace
- PopupWindow使用 样式,监听
- 安卓控件之ListView
- Ubuntu下面安装HIVE
- Python菜鸟--列表(List)
- 非对称式加密算法
- LeetCode - Unique Binary Search Trees