zoukankan      html  css  js  c++  java
  • 快速排序思路

    快排的核心是partition函数。主要思路是,随机找一个值,然后遍历数组,大于该值的放在该值的右边,小于该值的放在该值的左侧。

    algorithm quicksort(A, lo, hi) is
        if lo < hi then
            p := partition(A, lo, hi)
            quicksort(A, lo, p - 1)
            quicksort(A, p + 1, hi)
    
    algorithm partition(A, lo, hi) is
        pivot := A[hi]
        i := lo
        for j := lo to hi do
            if A[j] < pivot then
                swap A[i] with A[j]
                i := i + 1
        swap A[i] with A[hi]
        return i
    

      

    public class QuickSort {
       public static void quickSort(int [] arr,int left,int right) {
          int pivot=0;
          if(left<right) {
             pivot=partition(arr,left,right);
             quickSort(arr,left,pivot-1);
             quickSort(arr,pivot+1,right);
          }
       }
       private static int partition(int[] arr,int left,int right) {
          int key=arr[left];
          while(left<right) {
             while(left<right && arr[right]>=key) {
                right--;
             }
             arr[left]=arr[right];
             while(left<right && arr[left]<=key) {
                left++;
             }
             arr[right]=arr[left];
          }
          arr[left]=key;
          return left;
       }
    
       public static void main(String[] args) {
          int arr[]= {65,58,95,10,57,62,13,106,78,23,85};
          System.out.println("排序前:"+Arrays.toString(arr));
          quickSort(arr,0,arr.length-1);
          System.out.println("排序后:"+Arrays.toString(arr));
       }
    }

     https://blog.51cto.com/13733462/2113397

    https://en.wikipedia.org/wiki/Quicksort

  • 相关阅读:
    平衡的括号[UVA-673]
    Spark GraphX图形数据分析
    Spark sql
    Spark 分布式计算原理
    spark 算子实例
    window scala-2.11.8 安装
    spark 2.3.3 安装
    安装jdk
    Logstash-6.2.2安装和Kibana-6.2.2安装:
    elasticsearch-6.2.2 安装
  • 原文地址:https://www.cnblogs.com/hejunlin1992/p/12485256.html
Copyright © 2011-2022 走看看