快速排序

// 快速排序
- (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 : 结束位置

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单链表快速排序和数组的快速排序差不多。选一个枢轴然后进行一次划分把数字交换到枢轴的两边。这个过程需要交换,链表的交...
    赵智雄阅读 10,171评论 0 0
  • 快速排序 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然...
    anyurchao阅读 1,885评论 0 0
  • 姓名:朱嘉仪 学号:16020199053 转载自https://zhuanlan.zhihu.com/p/463...
    亓霂_宣萧阅读 3,704评论 0 0
  • 原文地址 快速排序 原理 快速排序是C.R.A.Hoare提出的一种交换排序。它采用分治的策略,所以也称其为分治排...
    gyl_coder阅读 4,406评论 0 0
  • /*** 冒泡法:从首元素开始,用该元素与剩余元素挨个比较,按排序进行位置互换,像冒泡一样* 时间复杂度为 (n-...
    城市里永远的学习者阅读 3,273评论 0 50