快速排序

遞歸

    public static void quickSort(int[] data, int left, int right){
        if(left < right){
            int mid = getMid(data,left,right);
            quickSort(data,left,mid-1);
            quickSort(data,mid+1,right);
        }
    }
    
    public static int getMid(int[] data,int left, int right){
        int pivot = data[left];
        while (left < right){
            while(left < right && data[right] >= pivot){
                right--;
            }
            data[left] = data[right];
            while(left < right && data[left] <= pivot){
                left++;
            }
            data[right] = data[left];
        } 
        data[left] = pivot;
        return left;
    }

非遞歸

    /**
     * @param A an integer array
     * @return void
     */
    public void sortIntegers(int[] A) {
        quickSort(A, 0, A.length - 1);
    }
    
    private void quickSort(int[] A, int start, int end) {
        if (start >= end) {
            return;
        }
        
        int left = start, right = end;
        // key point 1: pivot is the value, not the index
        int pivot = A[(start + end) / 2];

        // key point 2: every time you compare left & right, it should be 
        // left <= right not left < right
        while (left <= right) {
            // key point 3: A[left] < pivot not A[left] <= pivot
            while (left <= right && A[left] < pivot) {
                left++;
            }
            // key point 3: A[right] > pivot not A[right] >= pivot
            while (left <= right && A[right] > pivot) {
                right--;
            }
            if (left <= right) {
                int temp = A[left];
                A[left] = A[right];
                A[right] = temp;
                
                left++;
                right--;
            }
        }   
        quickSort(A, start, right);
        quickSort(A, left, end);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氯质,一起剝皮案震驚了整個(gè)濱河市欣范,隨后出現(xiàn)的幾起案子飞几,更是在濱河造成了極大的恐慌黑界,老刑警劉巖举庶,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琳水,死亡現(xiàn)場(chǎng)離奇詭異借嗽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)陋守,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門震贵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人水评,你說我怎么就攤上這事猩系。” “怎么了中燥?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵寇甸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我疗涉,道長(zhǎng)拿霉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任咱扣,我火速辦了婚禮绽淘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闹伪。我一直安慰自己沪铭,他們只是感情好壮池,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杀怠,像睡著了一般椰憋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赔退,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天橙依,我揣著相機(jī)與錄音,去河邊找鬼硕旗。 笑死窗骑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的漆枚。 我是一名探鬼主播慧域,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼浪读!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辛藻,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤碘橘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吱肌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痘拆,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年氮墨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纺蛆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡规揪,死狀恐怖桥氏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猛铅,我是刑警寧澤字支,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站奸忽,受9級(jí)特大地震影響堕伪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜栗菜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一欠雌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疙筹,春花似錦富俄、人聲如沸禁炒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽齐苛。三九已至,卻和暖如春桂塞,著一層夾襖步出監(jiān)牢的瞬間凹蜂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工阁危, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玛痊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓狂打,卻偏偏與公主長(zhǎng)得像擂煞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趴乡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 本文有七千字晾捏,閱讀大約需要占用你10分鐘時(shí)間蒿涎。 好吧。惦辛。隨便寫的劳秋,我也不知道會(huì)花多久看完。因?yàn)閷懙谋容^爛胖齐,而且只是...
    鍋與盆閱讀 8,111評(píng)論 5 36
  • quicksort可以說是應(yīng)用最廣泛的排序算法之一玻淑,它的基本思想是分治法,選擇一個(gè)pivot(中軸點(diǎn))呀伙,將小于pi...
    黎景陽閱讀 449評(píng)論 0 1
  • 概述 快速排序是面試中的常見題补履,每次簡(jiǎn)述一遍快速排序的原理便覺得仿佛已經(jīng)掌握了它。不是挺簡(jiǎn)單的嗎剿另?然而實(shí)際實(shí)現(xiàn)的時(shí)...
    芥丶未央閱讀 1,554評(píng)論 0 0
  • 大概是宮崎駿的版本先入為主干像,所以看這本書的時(shí)候很自然的把動(dòng)漫的形象帶入進(jìn)去……哈哈,不過小說里的哈爾不但沒有動(dòng)漫里...
    dinashuo閱讀 268評(píng)論 0 0
  • 從氣場(chǎng)和衣著來看驰弄,這大叔大概是一個(gè)郁郁不得志的白領(lǐng)麻汰,下班后帶著上班時(shí)的憋屈來到了這家小店。因?yàn)椴似返馁u相和他吃慣的...
    洛倫茲小調(diào)閱讀 208評(píng)論 1 1