在此附上一张快速排序算法的简单易懂图。
package test;
import java.util.Arrays;
public class QKSortDemo {
public static void sort(int a[], int low, int hight) {
if(low>hight){
return;
}
int basic = a[low]; //取表的第一个数为基准数
int i = low; //取头坐标为i
int j = hight;//取尾坐标为j
while(i<j){
while(i<j && basic<=a[j]){
j--;
}
if(i<j){
a[i++] = a[j];
}
while(i<j && a[i]<basic){
i++;
}
if(i<j){
a[j--] = a[i];
}
}
a[i] = basic;
sort(a, low, i-1); //对低子表进行递归排序
sort(a, i+1, hight);//对高子表进行递归排序
}
public static void main(String[] args) {
//定义数组a。并指定数组a的大小为10
int a[] = new int[10];
//随机生成10个数据,并放入数组a中。
for(int i = 0; i<10;i++){
int number = (int) (Math.random()*100);
a[i] = number;
}
//打印排序前数组中数据的顺序
System.out.println("随机数据为:"+Arrays.toString(a));
//排序函数
sort(a, 0, a.length - 1);
//打印通过快速排序后的数组a
System.out.println("排序后结果为: "+Arrays.toString(a));
}
}