归并排序
来源:互联网 发布:显卡软件超频 编辑:程序博客网 时间:2024/05/16 06:36
<span style="font-size:18px;">/** * 归并排序 * @author xxxu * */public class GuiBingSort {//额外的数组空间private int[] aux=null;private boolean less(int a,int b){if(a<b){return true;}else{return false;}}public void sort(int[] a){aux=new int[a.length];sort(a,0,a.length-1);}/* * 递归,主要是merge方法 */private void sort(int[] a, int lo,int hi) {if(hi<=lo){return ;}int mid=lo+(hi-lo)/2;//排序前半部分sort(a,lo,mid);//排序后半部分sort(a,mid+1,hi);merge(a,lo,mid,hi);}public void show(int[] a){for (int i = 0; i < a.length; i++) {System.out.print(a[i]+" ");}System.out.println();}/* * 数组的前半部分和后半部分都是有序的,才可以像这样比较 */private void merge(int[] a, int lo, int mid, int hi) {int i=lo;int j=mid+1;//复制数组for (int k = lo; k <= hi; k++) {aux[k]=a[k];}for (int k = lo; k <= hi; k++) {//如果i>mid,表示数组的前半部分已经比完了,只有后半部分了if(i>mid){a[k]=aux[j++];}else if(j>hi){ //数组的后边那部分比完了,只有前半部分了a[k]=aux[i++];}else if(less(aux[j],aux[i])){ //如果后半部分的值比前半部分的值小,那么就交换a[k]=aux[j++];}else{a[k]=aux[i++];}}}}</span>
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- POJ 3352|Road Construction|边双联通分量|Tarjan
- 利用c语言绘制漫天星空-动画
- 2015年阿里巴巴中间件比赛rpc框架
- SVN图标不显示的2种处理方式
- Queue and stack
- 归并排序
- dd命令的简单用法
- PHP之include载入文件
- Redis教程(十五):C语言连接操作代码实例
- 百度迁徙背后数据瓦片规则分析(自定义图层)
- 前端开发-切图初了解
- Objective-C内存管理
- NYoj 2 括号配对问题(栈)
- Spring beans架构