iOS-数组排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-数组排序相关的知识,希望对你有一定的参考价值。

参考技术A 首先提供一些排序文章供大家参考学习
常用排序算法总结
ios-八大基本排序
Sort 各类算法和时间复杂度分析

关于iOS中,我们有自己的"sort”尚方宝剑,主要涉及的有NSComparisonResult和compare

NSComparisonResult 是一个枚举类型里面包含三个值
NSOrderedAscending = -1L,表示两个比较的对象前者小于后置
NSOrderedSame, 表示比较的对象相等
NSOrderedDescending表示两个比较的对象前者大于后者

字符串比较大小的函数,返回NSComparisonResult

数组排序方法(升序)

数组排序方法

数组排序方法(乱序)

单关键字排序

多关键字排序

其中ascending为YES表示升序排列
详细也可看这篇文章分享 iOS浅析排序规则描述类: NSSortDescriptor

iOS之数组的排序(升序降序及乱序)

#pragma mark -- 数组排序方法(升序)

- (void)arraySortASC{

    //数组排序

    //定义一个数字数组

    NSArray *array = @[@(3),@(4),@(2),@(1)];

    //对数组进行排序

    NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

        NSLog(@"%@~%@",obj1,obj2); //3~4 2~1 3~1 3~2

        return [obj1 compare:obj2]; //升序

    }];

    NSLog(@"result=%@",result);

}

 

#pragma mark -- 数组排序方法(降序)

- (void)arraySortDESC{

    //数组排序

    //定义一个数字数组

    NSArray *array = @[@(3),@(4),@(2),@(1)];

    //对数组进行排序

    NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

        NSLog(@"%@~%@",obj1,obj2); //3~4 2~1 3~1 3~2

        return [obj2 compare:obj1]; //降序

    }];

    NSLog(@"result=%@",result);

}

 

#pragma mark -- 数组排序方法(乱序)

- (void)arraySortBreak{

    //数组排序

    //定义一个数字数组

    NSArray *array = @[@(3),@(4),@(2),@(1),@(5),@(6),@(0)];

    //对数组进行排序

    NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

        NSLog(@"%@~%@",obj1,obj2); 

        //乱序

        if (arc4random_uniform(2) == 0) {

            return [obj2 compare:obj1]; //降序

        }

        else{

            return [obj1 compare:obj2]; //升序

        }

    }];

    NSLog(@"result=%@",result);

}

以上是关于iOS-数组排序的主要内容,如果未能解决你的问题,请参考以下文章

iOS 数组排序

IOS 对数组内元素进行排序

iOS小技能:对象数组按照日期分组和排序,使用块代码实现数组排序和乱序。

iOS小技能:对象数组按照日期分组和排序,使用块代码实现数组排序和乱序。

iOS数组排序

iOS Swift:将数组排序为多维数组