小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

由快速排序到分治思想

 堂tj77m7tpne37 2018-01-12



   快速排序是一種基于分治思想的排序算法 它主要分為以下幾步

1、一個數(shù)組按切分元素分成兩個數(shù)組,一個數(shù)組是大于切分元素的,另一個數(shù)組是小于切分元素的,

2、然后將這兩個部分按上面的思路獨立排序。

3、并將有序的子數(shù)組歸并 得到一個完整的數(shù)組。

這中間的關(guān)鍵就在于切分。

           

代碼實現(xiàn)

public class Quick {

       private static void sort(Comparable[] a, int l0, int l1) {

              // TODO Auto-generated method stub

              if(l0 > l1) return;   //做基本的判斷

              int l2=partition(a,l0,l1);  //調(diào)用方法實現(xiàn)按切分 得到最終a所在位置

              sort(a,l0,l2-1);   //排序比a小的數(shù)組

              sort(a,l2 1,l1);   //排序比a大的數(shù)組

       }

       private static int partition(Comparable[] a, int l0, int l1) {  //定義切分方法

              int i=l0;   int j=l1 1; //定義左右指針

              Comparable  v=a[0];  //獲得切分元素

              while(true){   掃描左右

                     while(less(a[ i],v))  if(i==l1)  break;

//調(diào)用 less方法做判斷a[i] 和v 直到a[i]大于v時 或者 i 到數(shù)組末尾時才停止

                     while(less(v,a[j--])) if(j==l0)  break;

//調(diào)用 less方法做判斷a[j] 和v 直到a[j]小于v時 或者 i 到數(shù)組頭時才停止

                     if(i>j)  break;   //做判斷  如果作為切分調(diào)出循環(huán)

                     exch(a,i,j);   調(diào)用exch()方法來吧a[i]和a[j] 交換位置

              }

              exch(a,l0,j);   //調(diào)用exch()方法 將v放入正確的位置

              return j;

       }

}


快速排序的特性

復(fù)雜度 NlgN 空間復(fù)雜度 lgN 其運行效率與切分元素值有關(guān)  一把在排序之前先隨機整個數(shù)組。 快速排序也是最快的通用排序算法。


分治思想理念                       

分治,字面上的解釋是“分而治之”,就是把一個復(fù)雜的問題分成兩個或更多的相同或相似的子問題。所以他有三個要點

1、劃分步:把輸入的問題劃分為k個子問題,并盡量使這k個子問題的規(guī)模大致相同

2、治理步:調(diào)用處理方法來處理問題。

3、組合步:組合步把各個子問題的解組合起來。


從快速排序到分治

在快速排序中將一個數(shù)組按切分元素分成兩個數(shù)組就是在不同的劃分步。然后將這兩個部分按上面的思路獨立排序  這就是治理步。 最后將所有的子數(shù)組歸并到一個數(shù)組 就是組合步。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多