是冒泡排序的改进型。不同的是,冒泡排序在每一轮只把一个元素冒泡到数列的一端,而快
速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素
移动到数列的另一边,从而把数列拆解成了两个部分,也就是分治,然后继续对这两部分继
续进行排序,从而使整个序列达到有序。
public class kuaipai {
public static void main(String[] args) {
int[] arr = {1, 5, 0, 9, 2, 7};
quickSort(arr,0,arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void quickSort(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;
//递归调用左半数组
quickSort(arr, low, j-1);
//递归调用右半数组
quickSort(arr, j+1, high);
}
}