public class MergeSort {
public static void sort(int[] numbers) {
divide(numbers, 0, numbers.length-1);
}
// divide the array into half
public static void divide(int[] numbers, int l, int r) {
if (l >= r) return;
int m = (l+r)/2;
divide(numbers, l, m);
divide(numbers, m+1, r);
merge(numbers,l,r,m);
}
// sort and merge two arrays
public static void merge(int[] numbers, int l, int r, int m) {
int[] res = new int[r-l+1];
int left = l;
int right = m+1;
int count = 0;
while (left <= m && right <= r) {
if (numbers[left] < numbers[right])
res[count++] = numbers[left++];
else
res[count++] = numbers[right++];
}
while (left <= m) {
res[count++] = numbers[left++];
}
while (right <= r) {
res[count++] = numbers[right++];
}
System.out.println(count);
count = 0;
for (int i=l; i<=r; i++) {
numbers[i] = res[count++];
}
}
public static void main(String[] args) {
int[]data= {73,22,93,43,55,14,28,65,39,81,33,100};
sort(data);
//divide(data, 0, data.length-1);
for(int i=0;i
Sorting -- MergeSort
最新推荐文章于 2021-07-22 23:51:38 发布