美文网首页
iOS算法:用OC实现一个快速排序

iOS算法:用OC实现一个快速排序

作者: Charlie_Z | 来源:发表于2019-01-09 10:04 被阅读32次

用OC实现一个快速排序

算法实现:

- (NSArray *)quickSortWithArray:(NSArray *)array {
    if (!array) {
        return @[];
    }
    if (array.count == 0 || array.count == 1) {
        return array;
    }
    NSMutableArray *sortedArray = [NSMutableArray array];
    NSInteger baseNumberIndex = random() % array.count;
    NSNumber *baseNumber = array[baseNumberIndex];
    NSMutableArray *unsortedArray = [array mutableCopy];
    [unsortedArray removeObjectAtIndex:baseNumberIndex];
    NSMutableArray *leftArray = [NSMutableArray array];
    NSMutableArray *rightArray = [NSMutableArray array];
    
    for (NSNumber *curNumber in unsortedArray) {
        if (curNumber.integerValue < baseNumber.integerValue) {
            [leftArray addObject:curNumber];
        } else {
            [rightArray addObject:curNumber];
        }
    }
    
    [sortedArray addObjectsFromArray:[self quickSortWithArray:[leftArray copy]]];
    [sortedArray addObject:baseNumber];
    [sortedArray addObjectsFromArray:[self quickSortWithArray:[rightArray copy]]];
    
    return sortedArray;
}

测试函数:

- (void)handleSubject {
    
    /**INPUT*/
    NSMutableArray *array = [NSMutableArray array];
    for (int i = 0; i < 10000; i++) {
        NSInteger num = random() % 10000 - 5000;
        [array addObject:@(num)];
    }
//    NSLog(@"pre sort | %@",array);
    
    /**SORTING*/
    [self startTimeConsuming];
    NSArray *sortedArray = [self quickSortWithArray:array];
    [self endTimeConsuming];
    
    /**OUTPUT*/
//    NSLog(@"after sort | %@",sortedArray);
}

输出耗时:

2019-01-09 09:52:20.919685+0800 CLLeetcode[16387:801648] the time consuming is 28.318115 ms

相关文章

  • iOS算法:用OC实现一个快速排序

    用OC实现一个快速排序 算法实现: 测试函数: 输出耗时: 2019-01-09 09:52:20.919685+...

  • OC 中实现常用的算法

    #在OC中实现常用的算法(冒泡,选择,快速,插入) ## 1.冒泡排序 - (void)viewDidLoad {...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • iOS算法笔记-快速排序-OC实现

    快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它...

  • 手撕代码 之 快速排序

    1.实现快速排序算法 问题描述给定一个无序数组int[ ] a,使用快速排序算法进行排序。 解题思路对于快速排序,...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • 快速排序算法(OC实现)

    1.快速排序的意义:快速排序是一种优雅的排序算法,快速排序使用分而治之的策略。(一种递归式问题解决方法),快速排序...

  • 排序算法

    快速排序:顾名思义就是快,c语言底层实现的排序算法主要就是用的快速排序。快速排序,最好时间复杂度是nlogn,最坏...

  • Python实现程序员必备之排序算法汇总

    本文用Python实现了快速排序、插入排序、希尔排序、归并排序、堆排序、选择排序、冒泡排序共7种排序算法。 一、快...

  • 三大排序算法

    归并排序[稳定的排序算法] 递归实现 非递归实现 快速排序[不稳定的排序算法] 堆排序[不稳定的排序算法]

网友评论

      本文标题:iOS算法:用OC实现一个快速排序

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