美文网首页
iOS快速排序

iOS快速排序

作者: oceanfish | 来源:发表于2017-03-26 15:55 被阅读24次

时间复杂度: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;
}

相关文章

  • iOS 中的冒泡、选择、快速、插入排序算法

    不喜勿喷, 不吝指教 冒泡排序 选择排序 插入排序 快速排序 参考链接:iOS 开发中常用的排序(冒泡、选择、快速...

  • iOS标准库中常用数据结构和算法之排序

    上一篇:iOS系统中的常用数据结构之链表 ?排序 排序是指将乱序数组变为有序排列的处理。iOS提供了快速排序、堆排...

  • 算法

    iOS冒泡排序、插入排序、选择排序、快速排序、二分查找用数组实现栈和队列专题:菲波那切数列与递归

  • iOS - 快速排序

    Demo_github 快速排序 快速排序(Quick Sort)是对冒泡排序的一种改进。通过一趟排序将要排序的数...

  • iOS快速排序

    时间复杂度:nlog(n)

  • iOS 快速排序

      快速排序(Quick Sort)是实际开发中经常选用的一种排序方式。其排序原理:取数组中的首个元素为轴点数据,...

  • iOS 快速排序

    首先我们看下为啥要使用快速排序,如:现在我们有一个数组,需要对里面的数据进行排序,使用最原始的双层for循环排序 ...

  • ios 快速排序

    - (void)viewDidLoad { [super viewDidLoad]; //初始化 创建数组...

  • iOS 快速排序

    核心代码 ///=================快速排序 - (void)sort { self.array...

  • 数组的排序

    系统提供的排序方法,我觉得应该是快速排序方法的封装 OC swift 还有其他排序的方法,可参考文章:iOS 数组...

网友评论

      本文标题:iOS快速排序

      本文链接:https://www.haomeiwen.com/subject/yljkottx.html