iOS快速排序

时间复杂度:nlog(n)

//
//  main.m
//  Algorithms
//
//  Created by yuki on 2017/3/25.
//  Copyright © 2017年 kang.yu.sh. All rights reserved.
//

#import <Foundation/Foundation.h>
static NSMutableArray *list;

void sumalute(NSInteger min,NSInteger max){
    if (max - min < 1) {//one element
        return;
    }
    
    NSInteger i = min;
    NSInteger j = max;
    NSNumber *target = list[min];
    for ( ; j >= min; j--) {
        NSNumber *after = list[j];
        if (after.integerValue > target.integerValue) {//👈 small
            continue;
        }
        
        for (; i < j; i ++) {
            if (((NSNumber *)list[i]).integerValue > target.integerValue) {//👉 big
                NSNumber *current = list[i];
                list[i] = list[j];
                list[j] = current;
                break;
            }
        }
        
        if (j == i) {
            NSNumber *current = list[min];
            list[min] = list[j];
            list[j] = current;
            NSLog(@"min>>: %ld, max>>: %ld, j>>: %ld" , min, max, j);
            NSLog(@"%@",list);
            break;
        }
    }
    
    sumalute(min, j-1);
    sumalute(j+1, max);
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        list = [NSMutableArray arrayWithObjects:@"4",@"5",@"6",@"5",@"8",@"7",@"3",@"2", nil];
        
        sumalute(0, list.count-1);
        
        NSLog(@"%@",list);
        
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文分析冒泡、选择、插入、希尔、快速、归并和堆排序,为不影响阅读体验,将关于时间、空间复杂度和稳定性的概念放在博文...
    DeppWang阅读 449评论 0 2
  • 该系列文章主要是记录下自己暑假这段时间的学习笔记,暑期也在实习,抽空学了很多,每个方面的知识我都会另起一篇博客去记...
    Yanci516阅读 12,333评论 6 19
  • 第一次看赛龙舟比赛,顶着烈日暴晒的参赛选手们,很不容易。中午12点就开始预备了,在海上暴晒几个小时,烈日炎炎的夏日...
    KomiyaNG阅读 296评论 0 0
  • 在这个世界上,90后自成一派,被赋予很多差评 任性 狂妄 目高一切 90后其实不怕辛苦,更不怕加班,只怕看不到希望...
    红电子阅读 212评论 0 0
  • 突然发现,学习也是一种乐趣,突然发现自己还有好多不会的,不懂得。我从现在开始充电
    大小丫丫的妈妈阅读 263评论 0 0