public class QuickSort {
public static void main(String[] args) {
int[] list= {49,38,65,97,76,13,27};
quickSort(list, 0, list.length-1);
}
public static void quickSort(int []arr,int low,int high) {
if(low<high) {
int mid=partition(arr, low, high);
//左边的进行分区
quickSort(arr, low, mid-1);
//右边的进行分区
quickSort(arr, mid+1, high);
}
}
public static int partition(int[]array,int low,int high) {
//设置两个变量 i j i=0 j=high
//以数组的第一个元素作为关键字
int key=array[low];
int i=low,j=high;
if(low<high) {
while(i<j) {
//由J开始向前搜索
while(i<j&&array[j]>=key) {
j--;
}
if(i<j) {
array[i]=array[j];
i++;
}
//从i 开始搜索
while(i<j&&array[i]<=key) {
i++;
}
if(i<j) {
array[j]=array[i];
j--;
}
}
array[i]=key;
System.out.println("每次排序的结果"+Arrays.toString(array));
}
return i;
}
}
网友评论