快速排序

// 快速排序
- (void)fastSortWithArray:(NSMutableArray *)arr start:(NSInteger)start end:(NSInteger)end {
    if (start > end) return;
    NSInteger base,i,j;
    // 基準值可以隨意位置取
    base = start;
    i = start;
    j = end;
    
    while (i != j) {
        while (i != j && [arr[j] intValue] >= [arr[base] intValue]) {
            j --;
        }
        while (i != j && [arr[i] intValue] <= [arr[base] intValue]) {
            i ++;
        }
       //  取大于base的索引與小于base位置互換
        [arr exchangeObjectAtIndex:i withObjectAtIndex:j];
    }
    // 更換基準值位置
    [arr exchangeObjectAtIndex:base withObjectAtIndex:i];

    [self fastSortWithArray:arr start:start end:i-1];
    [self fastSortWithArray:arr start:i+1 end:end];
}

start : 開始位置
end : 結束位置

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 單鏈表快速排序和數(shù)組的快速排序差不多。選一個樞軸然后進行一次劃分把數(shù)字交換到樞軸的兩邊。這個過程需要交換,鏈表的交...
    趙智雄閱讀 5,053評論 0 0
  • 快速排序 設要排序的數(shù)組是A[0]……A[N-1],首先任意選取一個數(shù)據(jù)(通常選用數(shù)組的第一個數(shù))作為關鍵數(shù)據(jù),然...
    anyurchao閱讀 299評論 0 0
  • 姓名:朱嘉儀 學號:16020199053 轉載自https://zhuanlan.zhihu.com/p/463...
    亓霂_宣蕭閱讀 638評論 0 0
  • 原文地址 快速排序 原理 快速排序是C.R.A.Hoare提出的一種交換排序。它采用分治的策略,所以也稱其為分治排...
    gyl_coder閱讀 991評論 0 0
  • /*** 冒泡法:從首元素開始,用該元素與剩余元素挨個比較,按排序進行位置互換,像冒泡一樣* 時間復雜度為 (n-...
    城市里永遠的學習者閱讀 501評論 0 50

友情鏈接更多精彩內(nèi)容