算法原理
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
代码示例
import java.util.Arrays;
public class QuickSort {
public static void quickSort(int array[],int low,int high){
//递归算法出口
if(low > high){
return;
}
//定义该次排序的基准 key
int key = array[low];
int i = low;
int j = high;
//完成一次排序
while (i<j){
//从右往左找到第一个小于key的数
while (i<j && array[j]>key){
j--;
}
//从左往右找到第一个大于key的数
while (i<j && array[i]<=key){
i++;
}
//交换
if (i<j){
int p = array[i];
array[i] = array[j];
array[j] = p;
}
}
//调整key的位置
int p = array[i];
array[i] = array[low];
array[low] = p;
//对key左边的快排
quickSort(array,low,i-1);
//对key右边的快排
quickSort(array,i+1,high);
}
public static void main(String[] args) {
int[] unsortedArray = {5,4,1,3,6,9,8,7,2,10};
quickSort(unsortedArray,0,unsortedArray.length-1);
System.out.println("最终结果:");
System.out.println(Arrays.toString(unsortedArray));
}
}