public class Qksort {
public static void arrqksort(int [] arr,int begin,int end){
if(begin>=end){//递归结束
return;
}
//确定key的值
int key =arr[begin];
//将来用于真的保存key值的下标
int keyIndex=begin;
for (int i = begin+1; i <end ; i++) {
if(arr[i]<key){
keyIndex++;
//交换i位置和keyIndex
int tmp=arr[keyIndex];
arr[keyIndex]=arr[i];
arr[i]=tmp;
}
}
//数列中所有比key小的都依次排列在key的右边,结束于keyIndex位置
//交换being位置和keyIndex,作用就是完成最后的分区
arr[begin]=arr[keyIndex];
arr[keyIndex] =key;//作用就是完成最后的分区
//左子列递归
arrqksort(arr,begin,keyIndex);
//右子列递归
arrqksort(arr,keyIndex+1,end);
}
public static void main(String[] args) {
int [] arr=new int[8];
//给数组随机赋值Math.random()*100随机产生0-100内的随机数
for (int i = 0; i <arr.length ; i++) {
arr[i]=(int)(Math.random()*100);
}
//遍历数组(用加强for)相当于普通for循环
/*for (int i = 0; i <arr.length ; i++) {
int tmp=arr[i];
System.out.println(tmp+" ");
}*/
for (int tmp : arr) {
System.out.print(tmp+" ");
}
System.out.println( );
arrqksort(arr,0,arr.length);
for (int tmp : arr) {
System.out.print(tmp+" ");
}
}
java数组的排序之快速排序
最新推荐文章于 2022-01-07 11:48:27 发布