黑马程序员-java之快速排序的实现

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

当然,现在java已经不用自己实现排序了。但是我觉得排序算法还是比较有意思的。在这里实现一下快速排序。

public class Paixu {
public static void main(String[] args) {
int[] arr=productArray();                     //获得一个由10个随机数组成的数组
 
System.out.print("排序前: [ ");          //打印显示 排序前的数组
for(int i=0;iif(i==arr.length-1){
System.out.println(arr[i]+" ]");
break;
}
System.out.print(arr[i]+", ");
}
 
 
quick(arr); //对数组进行排序

System.out.print("排序后: [ ");        //打印显示   排序后的数组
for(int i=0;iif(i==arr.length-1){
System.out.println(arr[i]+" ]");
break;
}
System.out.print(arr[i]+ ", ");
}
}

public static int[] productArray(){ //产生一个由10个随机数 组成的数组
int x=(int)(Math.random()*100+1); //产生一个1~100之间的随机数
int[] array=new int[10]; //定义一个容量为10的空数组
for(int i=0;i<10;i++){ //循环产生随机数,并将其赋值给数组的每个元素
array[i]=x;
x=(int)(Math.random()*100+1);
}
return array;
}

public static  int  getMiddle(int[] arr,int low,int high){ //获得枢轴值的最终位置
int pivot=arr[low];           //将第一个元素设为枢轴值,对数组进行划分
while(low //循环跳出条件
while(low=pivot)
--high;
arr[low]=arr[high];   //将比枢轴值小的元素移到左边
while(low++low;
arr[high]=arr[low];     //将比枢轴值大的元素移到右边
}
arr[low]=pivot;
return low;
}

public  static void quickSort(int[] arr,int low,int high){ //递归调用getMiddle
if(lowint middle=getMiddle(arr,low,high);
quickSort(arr,low,middle-1); //对左侧数组进行递归
quickSort(arr,middle+1,high); //对右侧数组进行递归
}
}

public static void quick(int[] arr){ //调用quickSort()实现数组的快速排序
if(arr.length>0){
quickSort(arr,0,arr.length-1);
}
}
}

你可能感兴趣的:(无)