基本思想:
快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后分别对这两部分记录继续进行上面的排序,以达到整个序列有序的目的。核心方法:递归
程序示例:
下面我们对a={40,60,30,80,50,20,90,20,10,70}进行一下快速排序
package com.xxt.quick_sort;
import java.lang.reflect.Array;
import java.util.Arrays;
import org.junit.Test;
/**
* 快速排序
* @author 13983
*
*/
public class Sort {
public static void main(String[] args) {
int[] a={40,60,30,80,50,20,90,20,10,70};
Qsort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
}
private static void Qsort(int a[],int low,int high) {
int pivot;
if(low<high){
pivot=Partiton(a,low,high);
Qsort(a,low,pivot-1); //比较关键字的左侧
Qsort(a,pivot+1,high); //比较关键字的右侧
}
}
private static int Partiton(int[] a, int low, int high) { //寻找比较关键字
int pivotkey;
pivotkey=a[low];
while(low<high){
while(low<high&&pivotkey<=a[high]){ //比关键字大的放在数组右侧
high--;
}
swap(a,low,high);
while(low<high&&pivotkey>=a[low]){ //比关键字小的放在数组左侧
low++;
}
swap(a,low,high);
}
return low;
}
private static void swap(int[] a, int low, int high) { //交换函数
int temp;
temp=a[low];
a[low]=a[high];
a[high]=temp;
}
}