亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java 快速排序(QuickSort)原理及實現代碼

2019-11-26 15:46:10
字體:
來源:轉載
供稿:網友

快速排序(QuickSort )是常用到的效率比較高的一種排序算法,在面試過程中也經常提及。下面就詳細講解一下他的原理、給出一個Java版本的實現。

快速排序思想:

通過對數據元素集合Rn 進行一趟排序劃分出獨立的兩個部分。其中一個部分的關鍵字比另一部分的關鍵字小。然后再分別對兩個部分的關鍵字進行一趟排序,直到獨立的元素只有一個,此時整個元素集合有序。

快速排序的過程――挖坑填數法(這是一個很形象的名稱),對一個元素集合R[ low ... high ] ,首先取一個數(一般是R[low] )做參照 , 以R[low]為基準重新排列所有的元素。

所有比R[low]小的放前面,所有比R[low] 大的放后面,然后以R[low]為分界,對R[low ... high] 劃分為兩個子集和,再做劃分。直到low >=  high 。

比如:對R={37, 40, 38, 42, 461, 5, 7, 9, 12}進行一趟快速排序的過程如下(注:下面描述的內容中元素下表從 0 開始):

原始序列3740384246157912
一:high-->low1240384246157912
一:low --> high1240384246157940
二:high-->low129384246157940
二:low --> high1293842461573840
三:high --> low129742461573840
三:low -->high1297424615423840
四:high --> low129754615423840
四:low --> high12975461461423840
一趟排序結果1297537461423840

開始選取基準 base = 37,初始位置下表 low = 0 , high = 8  , 從high=8,開始如果R[8] < base ,  將high位置中的內容寫入到R[low]中, 將high位置空出來, low = low +1 ;

從low開始探測,由于low=1 , R[low] > base ,所以將R[low]寫入到R[high] , high = high -1 ;

檢測到low < high ,所以第一趟快速排序仍需繼續:

此時low=1,high=7,因為 R[high] < base ,所以將 R[high] 寫入到到R[low]中,low = low + 1;

從low開始探測,low = 2 , R[low] >base ,所以講R[low]寫入到R[high],high=high-1;

繼續檢測到 low 小于high


此時low=2,high=6,同理R[high] < base ,將R[high] 寫入到R[low]中,low=low+1;

從low繼續探測,low = 3 , high=6 , R[low] > base , 將R[low]寫入到R[high]中,high = high-1;

繼續探測到low小于high

此時low=3,high=5,同理R[high] < base,將R[high]寫入到R[low]中,low = low +1;

從low繼續探測,low = 4,high=5,由于R[low] > base , 將R[low]寫入到R[high]中,high = high -1 ;

此時探測到low == high == 4 ;該位置即是base所在的位置,將base寫入到該位置中.

然后再對子序列Rs1 = {12,9,7,5} 和 Rs2={461,42,38,40}做一趟快速排序,直到Rsi中只有一個元素,或沒有元素。

(注: 在以上表單中可以看到一趟排序中有一些重復的數據(原始數據中沒有重復的數據),這是因為沒有清除該位置的數據,我們在特定的時間看該內存塊的數據依然是它,直到下一次將數據寫入該位置位置 ―― 在此該位置的數據是一個沒有意義臟數據,稱之為 “坑”)

快速排序的Java實現:

復制代碼 代碼如下:

private static boolean isEmpty(int[] n) {
        return n == null || n.length == 0;
    }

    // ///////////////////////////////////////////////////
    /**
     * 快速排序算法思想――挖坑填數方法:
     *
     * @param n 待排序的數組
     */
    public static void quickSort(int[] n) {
        if (isEmpty(n))
            return;
        quickSort(n, 0, n.length - 1);
    }

    public static void quickSort(int[] n, int l, int h) {
        if (isEmpty(n))
            return;
        if (l < h) {
            int pivot = partion(n, l, h);
            quickSort(n, l, pivot - 1);
            quickSort(n, pivot + 1, h);
        }
    }

    private static int partion(int[] n, int start, int end) {
        int tmp = n[start];
        while (start < end) {
            while (n[end] >= tmp && start < end)
                end--;
            if (start < end) {
                n[start++] = n[end];
            }
            while (n[start] < tmp && start < end)
                start++;
            if (start < end) {
                n[end--] = n[start];
            }
        }
        n[start] = tmp;
        return start;
    }

在代碼中有這樣一個函數:

復制代碼 代碼如下:

 public static void quickSortSwap(int[] n, int l, int h)

該函數可以實現,元素集合中特定的  l  到  h 位置間的數據元素進行排序。
關于快速排序就寫到這里了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品va在线| 九九热r在线视频精品| 亚洲精品综合久久中文字幕| 欧美日韩成人在线播放| 国模精品视频一区二区三区| 在线午夜精品自拍| 91情侣偷在线精品国产| 成人福利视频网| 国产精品久久久久久久久久尿| 欧美精品在线免费| 日韩在线一区二区三区免费视频| 国产视频精品久久久| 亚洲精品福利视频| 欧美日韩aaaa| 狠狠色狠色综合曰曰| 一本一本久久a久久精品牛牛影视| 亚洲精品福利在线| 这里只有精品在线播放| 日韩天堂在线视频| 国产乱人伦真实精品视频| 美女福利视频一区| 中文字幕精品国产| 亚洲人精选亚洲人成在线| 欧美激情精品久久久久久| 色吧影院999| 欧美福利视频在线| 亚洲成人av在线播放| 亚洲风情亚aⅴ在线发布| 久久久精品一区二区| 欧美大胆在线视频| 欧美一级淫片videoshd| 国产日产欧美a一级在线| 国产精品白嫩美女在线观看| 欧美夫妻性生活视频| 久久精品夜夜夜夜夜久久| 日本91av在线播放| 国产亚洲成精品久久| 亚洲精品视频免费在线观看| 日韩高清av一区二区三区| 国产热re99久久6国产精品| 国产精品网站视频| 热久久这里只有精品| 国产精自产拍久久久久久| 日韩亚洲欧美成人| 性视频1819p久久| 亚洲少妇激情视频| 国产欧美精品久久久| 色琪琪综合男人的天堂aⅴ视频| 97成人超碰免| 日韩av电影在线免费播放| 国产欧美日韩丝袜精品一区| 久久91亚洲人成电影网站| 26uuu日韩精品一区二区| 中文字幕日韩欧美在线| 欧美精品成人91久久久久久久| 日韩高清人体午夜| 欧美激情小视频| 国产精品91久久久| 亚洲第一色中文字幕| 91欧美视频网站| 欧美在线观看日本一区| 亚洲成人久久久| 国产精选久久久久久| 日韩av在线免费观看| 成人国产精品av| 欧美激情久久久久久| www国产精品视频| 中文亚洲视频在线| 欧美精品一区二区三区国产精品| 欧美激情xxxxx| 欧美高清视频在线| 久久久久久91香蕉国产| 日韩美女主播视频| 国产视频观看一区| 国产一区二区三区视频在线观看| 日日摸夜夜添一区| 精品一区二区三区四区在线| 亚洲人成电影网站色xx| 97国产一区二区精品久久呦| 欧美国产日韩二区| 国产一区二区三区18| 亚洲日本中文字幕免费在线不卡| 亚洲性xxxx| 九九综合九九综合| 91国产美女在线观看| 91成人免费观看网站| 国产激情999| 国产成人a亚洲精品| 欧美日韩国产中文精品字幕自在自线| 国产精品ⅴa在线观看h| 成人精品在线视频| 国产欧美久久一区二区| 91免费精品国偷自产在线| 色悠久久久久综合先锋影音下载| 日本高清不卡的在线| 欧美另类交人妖| 久久久久久久国产| 欧美大片在线看| 国产精品白嫩美女在线观看| 一本色道久久综合狠狠躁篇的优点| 国产欧美va欧美va香蕉在| 97精品视频在线播放| 欧美成人精品影院| 亚洲精品国产精品国自产观看浪潮| 日韩在线观看你懂的| 日韩福利视频在线观看| www亚洲欧美| 国产成人精品网站| 91久久国产精品| 法国裸体一区二区| 国产美女久久久| 狠狠躁夜夜躁人人躁婷婷91| 日韩国产高清视频在线| 欧美在线免费看| 亚洲一区二区久久久| 久久久精品999| 亚洲国产精品久久久久久| 亚洲最大在线视频| 亚洲一区中文字幕| 91免费在线视频| 欧美日韩成人在线播放| 亚洲综合av影视| 免费91麻豆精品国产自产在线观看| 国语自产偷拍精品视频偷| 岛国视频午夜一区免费在线观看| 欧美精品电影免费在线观看| 精品夜色国产国偷在线| 欧美性猛交xxxx免费看漫画| 久久久视频在线| 永久免费精品影视网站| 亚洲精品电影在线| 91免费精品国偷自产在线| 91免费看片网站| 97精品国产91久久久久久| 欧美精品18videosex性欧美| 亚洲精品一区在线观看香蕉| 尤物99国产成人精品视频| 亚洲欧美中文字幕在线一区| 人人做人人澡人人爽欧美| 国产视频精品va久久久久久| www.日韩免费| 中文字幕亚洲在线| 一区二区三区视频免费| 懂色av一区二区三区| 中文字幕日韩欧美在线| 成人免费网站在线| 欧美日韩国产综合新一区| 国产综合久久久久| 欧美成人一区二区三区电影| 国产亚洲欧美日韩精品| 日韩在线视频线视频免费网站| 亚洲日韩欧美视频| 精品久久久久久久久久久久久| 久久精品国产精品| 欧美国产日本高清在线| 亚洲成人久久电影| 日韩大片免费观看视频播放| 久久久久久久久久久成人| 国产一区二区三区视频在线观看| 国产精品成人一区二区三区吃奶| 欧美做爰性生交视频| 中文字幕亚洲一区二区三区五十路| 欧美裸体xxxxx| 国产有码一区二区|