快速排序算法 java
package sf;
import java.util.Arrays;
public class QuickSort {
public static void quickSort1(int[] arr,int low,int high){
int i,j,temp,t;
if(low>high){
return;
}
i=low;
j=high;
//temp就是基准位
temp = arr[low];
while (i<j) {
//先看右边,依次往左递减
while (temp<=arr[j]&&i<j) {
j--;
}
//再看左边,依次往右递增
while (temp>=arr[i]&&i<j) {
i++;
}
//如果满足条件则交换
if (i<j) {
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
//最后将基准为与i和j相等位置的数字交换
arr[low] = arr[i];
arr[i] = temp;
//递归调用左半数组
quickSort1(arr, low, j-1);
//递归调用右半数组
quickSort1(arr, j+1, high);
}
public static void quickSort(int[] arr , int low , int high){
if(low >= high) return;
int start = low;
int end = high;
int key = arr[start];
int tmp ;
while(true){
while(start < end && key <= arr[start]) start++;
while (start < end && key > arr[end]) end--;
if(start == end){
tmp = arr[start - 1];
arr[start -1] = key;
arr[low] = tmp;
quickSort(arr,low,start -1);
quickSort(arr,start,high);
break;
}else {
tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
}
}
}
public static void main(String[] args){
int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19,10};
quickSort(arr, 0, arr.length-1);
System.out.println("1");
System.out.println(Arrays.toString(arr));
}
}