import java.util.Arrays;
import org.stringtemplate.v4.compiler.STParser.template_return;
public class GuibingSort {
public static int[]sort(int[] array,int low,int high){
int mid = (low+high)/2;
if(low<high){
sort(array, low, mid);
sort(array, mid+1, high);
merge(array, low, mid, high);
}
return array;
}
private static void merge(int[] array, int low, int mid, int high) {
int i=low;int m=mid;
int j=mid+1;int n=high;
int k=0;
int[] tmp = new int[high-low+1];
while(i<=m && j<=n){
if(array[i]<array[j]){
tmp[k++]=array[i++];
}else{
tmp[k++]=array[j++];
}
}
while(i<=m){
tmp[k++]=array[i++];
}
while(j<=n){
tmp[k++]=array[j++];
}
for(int h=0;h<tmp.length;h++){
array[h+low]=tmp[h];
}
}
public static void QuickSort(int[] array,int low,int high){
int l=low;int h=high;int flag=array[low];
while(l<h){
while(l<h && array[h]>=flag){
h--;
}
if(l<h){
int tmp=array[h];
array[h]=array[l];
array[l]=tmp;
l++;
}
while(l<h && array[l]<=flag){
l++;
}
if(l<h){
int tmp=array[h];
array[h]=array[l];
array[l]=tmp;
h--;
}
}
if(l>low) QuickSort(array, low, l-1);
if(h<high) QuickSort(array, l+1, high);
}
// 归并排序的实现
public static void main(String[] args) {
int[] array = { 2, 7, 8, 3, 1, 6, 9, 0, 5, 4 };
// int[] temp = new int[array.length];
// GuibingSort.sort(array, 0, array.length - 1);
QuickSort(array, 0, array.length-1);
System.out.println(Arrays.toString(array));
}
}
排序 归并排序+快排
最新推荐文章于 2024-03-22 18:07:41 发布