快速排序

来源:互联网 发布:滨州北海大数据产业园 编辑:程序博客网 时间:2024/06/06 07:41

快速排序:和冒泡排序一样都是基于交换排序思想的。

其排序流程如下:

1、首先设定一个分界值,通过分界值将数组分成左右两部分;

2、将大于数组分界值的数据集中在数组的右边,将小于数组分界值的数据集中在数组的左边;

3、然后,左边和右边的数据可以独立的排序,对于左边的数组数据,又可以去一个分界值,将该部分数据分成左右两个部分,同样左边放置较小数据,右边放置较大数据。右侧

的数组数据也同样这么做;

4、重复上面的操作,即可。

public class  QuickSort{//固定数组大小static final int SIZE = 6;public static void main(String[] args) {//初始化数组int[] nums = new int[SIZE];for(int i=0;i<SIZE;i++){nums[i] = (int)(Math.random()*100);}//输出为排序之前的数组System.out.println("排序之前的数组为:");for(int i = 0;i<SIZE;i++){System.out.print(nums[i]+" ");}System.out.println();//执行快速排序quickSort(nums,0,SIZE-1);//输出排序之后的数组System.out.println("输出排序之后的数组为:");for(int i = 0;i<SIZE;i++){System.out.print(nums[i]+" ");}}public static void quickSort(int[] nums,int left,int right){int ltemp,rtemp;int f,temp;ltemp = left;rtemp = right;f = nums[(left+right)/2];while(ltemp<rtemp){while(nums[ltemp]<f){ltemp++;}while(nums[rtemp]>f){rtemp--;}if(ltemp<=rtemp){temp = nums[ltemp];nums[ltemp] = nums[rtemp];nums[rtemp]=temp;ltemp++;rtemp--;}}if(ltemp==rtemp){ltemp++;}//利用递归进行调用if(left<rtemp){quickSort(nums,left,ltemp-1);}if(ltemp<right){quickSort(nums,rtemp+1,right);}}}