归并排序:
package sort;
/**
* 归并排序
* @author longkun.wyb
*
*/
public class MergeSort {
/**
* 合并
* @param array
* @param low
* @param mid
* @param high
* @param arrtmp
*/
public static void merge(int[] array ,int low ,int mid ,int high , int[] arrtmp){
int left = low;
int right = mid+1;
int k = low;
while(left <= mid && right <=high){
if(array[left] > array[right]){
arrtmp[k++] = array[right++];
}else{
arrtmp[k++] = array[left++];
}
}
while(left<=mid){
arrtmp[k++] = array[left++];
}
while(right <= high){
arrtmp[k++] = array[right++];
}
for(int i = low ; i <= high ; ++i){
array[i] = arrtmp[i];
}
}
public static void sort(int[] array ,int low ,int high , int arrtmp[]){
if(low == high){
}else{
int mid = (low+high)/2;
sort(array,low,mid,arrtmp);
sort(array,mid+1,high,arrtmp);
merge(array, low, mid, high, arrtmp);
}
}
public static void main(String[] args) {
int[] array = {3,5,56,456,98,2345,99,44,88,55};
int[] arrtmp = new int[array.length];
sort(array,1,array.length-1,arrtmp);
for(int i = 1;i < array.length;++i){
System.out.print(array[i]+" ");
}
}
}