快速排序的基本思想是通过一趟排序将要排序的记录分割成独立的两个部分,其中一部分的所有记录的关键字都比另外一部分的所有记录关键字值小,然后再按此方法对这两部分记录分别进行快速排序,整个排序过程可以递归进行,以此达到整个记录序列变成有序。
import java.util.Arrays;
/**
* 快速排序算法
*/
/**
* @author 16026
*
*/
public class QuickSort {
/**
*
* @param array
* 整形数组
* @param low
* 数组起始坐标
* @param high
* 数组结尾坐标
*/
public static void sort(int[] array, int low, int high) {
int i = low;
int j = high;
if (i > j)
return;
// 选定第一个元素作为支点
int index = array[low];
//开始扫描
while (i < j) {
//从右往左寻找比支点小的元素
while (i < j && index <= array[j])
j--;
if (i < j) {
array[i++] = array[j];
}
//从左往右寻找比支点大的元素
while (i < j && index >= array[i])
i++;
if (i < j) {
array[j--] = array[i];
}
}
//至此,一次循环结束,下面对分支进行递归循环
//支点记录到位
array[i] = index;
sort(array,low,i-1);//对左分支进行递归
sort(array,i+1,high);//对右分支进行递归
}
public static void main(String [] args){
int [] array = {78,89,58,46,52,512,8,56,58};
sort(array,0,array.length-1);
System.out.println(Arrays.toString(array));
}
}