码迷,mamicode.com
首页 > 编程语言 > 详细

归并排序(2017-09-05)

时间:2017-09-05 22:05:42      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:调用   end   索引   star   越界   pre   oid   log   length   

归并排序是相当于将一个数组分为有序数组,在进行合并。

也就是将每个数当成一个有序数组,一 一合并在两两合并

知道将数组合并完。这里一个方法用来递归数组,也就是理论上将数组分离

第二个方法是将其进行合并(有序数组的合并)

这种归并如果不熟悉的人很容易报异常,所以多多分析。

 1     public void joinSort(int[] a,int start,int end) {
 2         int mid=(start+end)/2;
 3         if(start<end) {
 4             //递归调用将数组分为前一半
 5             joinSort(a,start,mid);
 6             //将数组分为后一半
 7             joinSort(a,mid+1,end);
 8             //调用合并两个有序数组
 9             merge(a,start,end,mid);
10         }
11     }
12     public void merge(int[] a,int start,int end,int mid ) {
13         int[] temp=new int[a.length];
14         int i=start,j=mid+1,k=start;
15         int tmp=start;
16         while(i<=mid&&j<=end) {
17             if(a[i]<a[j]) {
18                 temp[k++]=a[i++];
19             }else{
20                 temp[k++]=a[j++];
21             }
22         }
23         //如果哪里写的出了点小差错,很容易遭成数组索引越界的异常,所以一定要想好
24         while(k<=end) {
25             if(i<=mid) {
26                 temp[k++]=a[i++];
27             }else {
28                 temp[k++]=a[j++];
29             }
30         }
31          while(tmp<=end){
32                 a[start++]=temp[tmp++];
33             }
34     }

 

归并排序(2017-09-05)

标签:调用   end   索引   star   越界   pre   oid   log   length   

原文地址:http://www.cnblogs.com/duxiaoqian/p/7481878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!