• java
import java.util.Arrays;
import java.util.List;

public class QuickSort {

    public static void quickSort(int[] arr){
        qsort(arr, 0, arr.length-1);
    }

    private static void qsort(int[] arr, int low, int high){
        if (low < high){
            int pivot=partition(arr, low, high);        //将数组分为两部分
            qsort(arr, low, pivot-1);                   //递归排序左子数组
            qsort(arr, pivot+1, high);                  //递归排序右子数组
        }
    }

    private static int partition(int[] arr, int low, int high){
        int pivot = arr[low];     //枢轴记录
        while (low<high){
            while (low<high && arr[high]>=pivot) --high;
            arr[low]=arr[high];             //交换比枢轴小的记录到左端
            while (low<high && arr[low]<=pivot) ++low;
            arr[high] = arr[low];           //交换比枢轴小的记录到右端
        }
        //扫描完成,枢轴到位
        arr[low] = pivot;
        //返回的是枢轴的位置
        return low;
    }

    public static void main(String[] args) {
        System.out.println("Hello World!");
        int [] res=new int[]{5,2,4,7,1,8};
        quickSort(res);
        System.out.println(Arrays.toString(res));
    }
}
  • python
def quicksort(seq):
    if len(seq) <= 1:
        return seq
    less = []
    more = []
    base = seq.pop(0)
    for i in seq:
        if i < base:
            less.append(i)
        else:
            more.append(i)
    return quicksort(less) + [base] + quicksort(more)

seq = [5,4,3,6,7,2]
print (quicksort(seq))

results matching ""

    No results matching ""