归并排序
来源:互联网 发布:mac r语言安装 编辑:程序博客网 时间:2024/05/01 03:23
书看到归并排序这一部分的时候,感觉java中乱七八糟的接口、基本类型和泛型输入输出的问题真是影响对算法的理解,还是直接用C++实现比较直接。
#include <iostream>using namespace std;// 这样写可能效率不咋地,但思路比较清晰void merge(int a[],int low,int mid,int high){ int l=mid-low+1; int r=high-mid; int *left=new int[l]; for(int i=0; i<l; i++) { left[i]=a[low+i]; } int *right=new int[r]; for(int j=0; j<r; j++) { right[j]=a[mid+1+j]; } int i=0,j=0; // 归并回到a[low...high] for(int k=low; k<=high; k++) { if(i>=l) a[k]=right[j++]; else if(j>=r) a[k]=left[i++]; else if(left[i]<right[j]) a[k]=left[i++]; else a[k]=right[j++]; } delete left; delete right;}void merge_sort(int a[],int low,int high){ if(low>=high) return; int mid=low+(high-low)/2; merge_sort(a,low,mid);// 将左半边排序 merge_sort(a,mid+1,high);// 将右半边排序 merge(a,low,mid,high);// 归并结果}void show(int a[],int n){ for(int i=0; i<n; i++) { cout<<a[i]<<" "; } cout<<endl;}int main(){ int a[10]= {3,6,2,7,9,0,8,1,4,5}; show(a,10); merge_sort(a,0,9); show(a,10); return 0;}
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- IOS基础进阶-牛刀小试 UIViewController UIView
- css笔记(二)——几种常用的模式
- 百度站长页面优化建议
- 6. 函数
- 初学菜鸟的学习日记——栈结构(JAVA)
- 归并排序
- 韓国フェリー事故について
- ubuntu14.04 64位安装WPS(成功解决没有ia32-libs的问题)
- 马云谈保险 ,字字珠玑!
- 1Z0-051 QUESTION 27 table的命名规则
- 解决linux下cocos2dx不能播放声音
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- HttpModule
- 关于【非阻塞型同步 (Non-blocking Synchronization)】