归并排序java
来源:互联网 发布:直播apk源码 编辑:程序博客网 时间:2024/06/06 01:56
归并排序:从已经排好序的两堆数据中合并成一组排好序的数组
//归并排序public class Merge_sort {public static void merge(int[] ar,int p,int q,int r){int n1=q-p+1;int n2=r-q;int[] l1=new int[n1+1];int[] l2=new int[n2+1];for(int i=0;i<n1;i++){l1[i]=ar[p+i];}l1[n1]=Integer.MAX_VALUE;//哨兵,用于简化代码,不用每次都判断数组l1或l2是否为空for(int i=0;i<n2;i++){l2[i]=ar[q+i+1];}l2[n2]=Integer.MAX_VALUE;int i=0,j=0;for(int k=p;k<r+1;k++){if(l1[i]<=l2[j]){ar[k]=l1[i];i++;}else{ar[k]=l2[j];j++;}}}public static void merge_sort(int[] ar,int p,int r){if(p<r){int q=(p+r)/2;//左排序merge_sort(ar,p,q);//右排序merge_sort(ar,q+1,r);//合并merge(ar,p,q,r);}}public static void main(String[] args) {int []arr=new int[10];for(int i=0;i<10;i++){arr[i]=(int)(Math.random()*100+1);}System.out.println("排序前:");for(int i=0;i<10;i++){System.out.print(arr[i]+" ");}System.out.println();//排序merge_sort(arr,0,arr.length-1);for(int i=0;i<10;i++){System.out.print(arr[i]+" ");}System.out.println();}}排序前:
90 6 8 41 72 22 22 50 32 21
6 8 21 22 22 32 41 50 72 90
0 0
- java排序--归并排序
- 排序-归并排序-Java
- 归并排序Java实现
- java归并排序算法
- JAVA归并排序算法
- java归并排序
- java归并排序
- Java实现归并排序
- 归并排序(java)
- 25、JAVA归并排序
- java 归并排序
- java归并排序
- Java归并排序
- 归并排序 java
- Java实现归并排序
- 归并排序Java实现
- java 归并排序
- Java归并排序
- 接口(multiple)
- 响铃程序
- python正则表达式--基本用法和函数(一个例子)
- TFS部署:create_block allocate space error. ret: -1, error: 28, error desc: No space left on device
- 乱
- 归并排序java
- Windbg调试----Windbg入门
- Exchange & Lotus Notes邮件系统在线批量迁移账号及邮件
- 168. Excel Sheet Column Title
- CMD-NET命令详解
- Intellij IDEA 启动出现“前言中不允许有内容”
- MySQL设置远程访问
- Object
- 杭电ACM—HDU1200