一、概念
快速排序(QuickSort)是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
二、图解
三、Java代码
package com.hgldp.web;
import java.util.Arrays;
public class TestTwo {
public static void main(String[] args) {
int[] arr = {23,8,19,40,12,45,9,1,90,20};//待排序的数组
quickSort(arr, 0, arr.length-1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr,int low,int high){
if(low<high){//如果待排序的关键字的个数大于1
sortMethod(arr, low, high);
}
}
//递归方法
public static void sortMethod(int[] arr,int low,int high){
if(low>=high){//如果low的位置大于或等于high的位置,就结束了
return ;
}
int j =high;
int key = arr[low];//取关键字
while(low<high){//在一趟内
while(low<high && arr[high]>key){//high往后移动
high--;
}
arr[low]=arr[high];//j往后移动过程中总会找到一个比key小的
while(low<high && arr[low]<=key){//low往前移动
low++;
}
arr[high]=arr[low];//极端情况,high=low也没关系,互相赋值,等于没有变化
}
arr[low] = key;//循环到最后,arr[low]上面的值一定是无用的值,把key放到这个位置上去
sortMethod(arr, low+1, j);//低位递归
sortMethod(arr,0,low-1);//高位递归
}
}
四、把快速排序的思想掌握,代码就很好写了。如有不足,欢迎指出。