package sort;
public class QuickSort {
/**
*
* 快速排序选一个基值,一般选择第一个为基值,分成两部分,首先基值与最后一个相比较,如果基值小于最后一个值,则交换,再与第一个相比较,依次循环。
* @Created at 2014-5-19 下午09:04:53
* @lastUpdateAuthor
*/
private static int quickSort(int[] array,int i, int j) {
//一般默认设置基值为首位的值
int pivot = array[i];
while(i<j) {
//当基值小于最后一位的值,则将j的值减1,得到第一个比基值小的值,然后覆盖
while(i<j&&array[j]>pivot) {
j--;
}
array[i] = array[j];
//当基值大于第一位的值,则将i的值加1,得到第一个比基值大的值,然后覆盖
while(i<j&&array[i]<pivot) {
i++;
}
array[j] = array[i];
}
array[i] = pivot;
return i;
}
private static void partation(int[] array, int i, int j) {
if(i<j){
//通过一趟排序获得基值
int pivot = quickSort(array, i, j);
//分治递归
partation(array, i, pivot-1);
partation(array, pivot+1, j);
}
}
public static void main(String args[]) {
int[] array = {52,26,97,19,66,8,49};
partation(array,0,array.length-1);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
}
快速排序
最新推荐文章于 2021-11-19 16:57:43 发布