快速排序

快速排序的简单实现(大话数据结构)

采用递归的方式,每次讲数组分成两部分,一部分是比数组指定一个值小的一部分是比指定值大的部分,常常指定的值就是传递过来数组的第一个,你也可以采用数组中的其他数字

最后对好的两部分还是按照上面的步骤进行分类,一直到分成的两部分的数组中只有一个值为止

import java.util.Arrays;

public class QuickSort {
    void sort(int low,int end,int[]arr){
        if(low<end){
            int piov = partition(low, end, arr);
            sort(low,piov-1,arr);
            sort(piov+1,end,arr);
        }
    }

    int partition(int low ,int high, int []arr){
        int piovkey=arr[low];
        while(low<high){
            while(low<high&&arr[high]>=piovkey){
                high--;
            }
            swamp(low,high,arr);
            while(low<high&&arr[low]<=piovkey){
                low++;
            }
            swamp(low,high,arr);        //注意在这里每次交换的其实就是之前指定的那个值

        }
        return low;
    }
     void swamp(int index1,int index2,int arr[]){
        int temp=arr[index1];
        arr[index1]=arr[index2];
        arr[index2]=temp;
    }

    public static void main(String[] args) {
        int a[]={4,2,6,5,1,3};
        new QuickSort().sort(0,a.length-1,a);
        System.out.println(Arrays.toString(a));
    }
}
原文地址:https://www.cnblogs.com/feixiangdecainiao/p/10635406.html