快速排序算法

快速排序思想

看網(wǎng)上講快速排序半天才搞懂缭贡,總結(jié)一下,快速排序核心思想是保證每個元素其所有左邊元素比其小快鱼,所有右邊元素比其大纲岭。這樣理解最簡單窃判,具體是通過迭代來實現(xiàn)的袄琳。
閑來沒事唆樊,用各種語言實現(xiàn)了一下窗轩,當作一個小練習,直接上代碼:

OC實現(xiàn)

-(void)quickSortWithArray:(NSMutableArray *)array left:(NSInteger)left right:(NSInteger)right{
    if( left >= right )  return;
    
    NSInteger i = left;
    NSInteger j = right;
    NSUInteger pivot = [[array objectAtIndex:i] integerValue];
    while (i != j) {
        while (i < j && [[array objectAtIndex:j] integerValue] >= pivot) {
            j-- ;
        }
        while (i < j && [[array objectAtIndex:i] integerValue] <= pivot) {
            i++ ;
        }
        
        if (i < j) {
            [array exchangeObjectAtIndex:i withObjectAtIndex:j];
        }
    }
    
    [array exchangeObjectAtIndex:left withObjectAtIndex:i];
    
    [self quickSortWithArray:array left:left right:i-1];
    [self quickSortWithArray:array left:i+1  right:right];
    
}

Swift實現(xiàn):

    func quickSort(array: inout [NSInteger] , left:NSInteger , right:NSInteger ) -> () {
        if left >= right {
            return;
        }
        var i = left;
        var j = right;
        let pivot = array[i];
        
        while i != j {
            
            while i<j && array[j] >= pivot {
                 j -= 1 ;
            }
            
            
            while i<j && array[i] <= pivot {
                i += 1 ;
            }
            
            if (i < j) {
            array.swapAt(i, j);
            }
        }
        array.swapAt(i, left)
        
        self.quickSort(array: &array, left: left, right: i-1 );
        self.quickSort(array: &array, left: i+1, right:right );
        
    }

JS實現(xiàn):


            function quickSort(array, left, right){
                 if(left >= right){
                     return;
                 }
                 var i = left;
                 var j = right;
                 let pivot = array[i];
                 while(i != j){
                        while (i<j && array[j] >= pivot){
                            j --;
                        }

                        while (i<j && array[i] <= pivot){
                            i ++;
                        }
                        var p = array[i] ;
                        array[i] = array[j];
                        array[j] = p ;

                 }
                    var p = array[i] ;
                    array[i] = array[left];
                    array[left] = p ;
                
                this.quickSort(array, left, i-1);
                this.quickSort(array, i+1, right);

             }

python實現(xiàn):

def QuickSort(list, left, right):

    if left >= right:
        return
    i = left;
    j = right;
    pivot = list[left]

    while i != j:
        while(i < j) and (list[j] >= pivot):
            j -= 1;
        while(i < j) and (list[i] <= pivot):
            i += 1;
        list[i],list[j] = list[j],list[i];

    list[left], list[i] = list[i], list[left];

    QuickSort(list, left, i-1);
    QuickSort(list, i+1, right);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舌缤,一起剝皮案震驚了整個濱河市国撵,隨后出現(xiàn)的幾起案子玻墅,更是在濱河造成了極大的恐慌澳厢,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贯钩,居然都是意外死亡办素,警方通過查閱死者的電腦和手機摸屠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來檩咱,“玉大人揭措,你說我怎么就攤上這事刻蚯“砗” “怎么了炊汹?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長讨便。 經(jīng)常有香客問我充甚,道長,這世上最難降的妖魔是什么霸褒? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮废菱,結(jié)果婚禮上技矮,老公的妹妹穿的比我還像新娘。我一直安慰自己殊轴,他們只是感情好衰倦,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布旁理。 她就那樣靜靜地躺著,像睡著了一般淹接。 火紅的嫁衣襯著肌膚如雪叛溢。 梳的紋絲不亂的頭發(fā)上厢蒜,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音烹植,去河邊找鬼巷屿。 笑死,一個胖子當著我的面吹牛墩虹,可吹牛的內(nèi)容都是我干的嘱巾。 我是一名探鬼主播憨琳,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼旬昭!你這毒婦竟也來了篙螟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤问拘,失蹤者是張志新(化名)和其女友劉穎遍略,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骤坐,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡绪杏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了或油。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寞忿。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖顶岸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叫编,我是刑警寧澤辖佣,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站搓逾,受9級特大地震影響卷谈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霞篡,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一世蔗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朗兵,春花似錦污淋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盐欺,卻和暖如春赁豆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冗美。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工魔种, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粉洼。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓节预,卻偏偏與公主長得像甲抖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子心铃,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

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