快速排序代码实现

快速排序是冒泡排序的改进算法
就是在无序数组中找到一个基准数,以此让左边的数都小于这个基准数,右边的数都大于这个基准数,这样不断进行递归排序,最终就能让整个数组变成有序数组
下面是快速排序的源代码

package Sort;
import java.util.Arrays;
//此为快速排序的递归实现算法
public class QuickSort2 {
    public static void main(String[] args) {
        int[] array=new int[10];
        for(int i=0;i<array.length;i++){
            array[i]=(int)(Math.random()*100);
        }
        quickSort(array,0,array.length-1);
        System.out.println(Arrays.toString(array));

    }

    public static void quickSort(int[] array,int start, int end){
        if(start>end){
            return ;
        }
        //存储数组开始和末尾的位置
        int i=start;
        int j=end;
        //存储基准值
        int key=array[start];
        //开始一次排序
        while(i<j){//从右往左找到第一个小于key的数 升序排
            while(i<j&&array[j]>key){
                j--;
            }

        //从左往右找到第一个大于key的数 升序排
        while(i<j&&array[i]<=key){
            i++;
        }
        //进行交换
            if(i<j){
                int tmp=array[i];
                array[i]=array[j];
                array[j]=tmp;
            }
        }
        //对key值进行调整位置
        int p=array[i];
        array[i]=array[start];
        array[start]=p;
        System.out.println(i);
        //对key左边进行快排
        quickSort(array,start,i-1);
        //对key右边进行快排
        quickSort(array,i+1,end);
    }

}


版权声明:本文为qq_38052208原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。