[数据结构][Sort]Merge Sort

 1 public class Solution
 2 {
 3     public void adapter(int[] data)
 4     {
 5         mergeSort(data, 0, data.length - 1);
 6     }
 7     
 8     public void mergeSort(int[] data, int left, int right)
 9     {
10         if(left >= right)
11         {
12             return;
13         }
14         
15         int middle = (left + right) / 2;
16         
17         mergeSort(data, left, middle);
18         mergeSort(data, middle + 1, right);
19         
20         mergeArray(data, left, middle, right);
21     }
22     
23     public void mergeArray(int[] data, int left, int middle, int right)
24     {
25         int[] temp = new int[right - left + 1];
26         
27         int pointerOne = left;
28         int pointerTwo = middle + 1;
29         
30         int count = 0;
31         
32         for(count = 0; count < temp.length; count ++)
33         {
34             if((pointerOne > middle) || (pointerTwo > right))
35             {
36                 break;
37             }
38             
39             if(data[pointerOne] < data[pointerTwo])
40             {
41                 temp[count] = data[pointerOne ++];
42             }
43             else
44             {
45                 temp[count] = data[pointerTwo ++];
46             }
47         }
48         
49         while(pointerOne <= middle)
50         {
51             temp[count ++] = data[pointerOne ++];
52         }
53         
54         while(pointerTwo <= right)
55         {
56             temp[count ++] = data[pointerTwo ++];
57         }
58         
59         for(int i = 0; i < temp.length; i ++)
60         {
61             data[left + i] = temp[i];
62         }
63     }
64     
65 }

 

posted @ 2017-09-03 17:02  StringBuilder  阅读(108)  评论(0)    收藏  举报