iOS数组排列

1、这个方法可以实现数组的倒叙输出

reverseObjectEnumerator

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

for (NSString *string  in [array reverseObjectEnumerator]) {

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

}

log日志:

2016-06-10 16:28:54.458 自定义搜索[4242:322108] string ===== 4

2016-06-10 16:28:54.459 自定义搜索[4242:322108] string ===== 3

2016-06-10 16:28:54.460 自定义搜索[4242:322108] string ===== 2

2016-06-10 16:28:54.461 自定义搜索[4242:322108] string ===== 1

2、这个方法也可以实现倒叙排列

[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

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

}];

logo日志:

2016-06-10 16:35:59.281 自定义搜索[4295:326175] obj ==== 4

2016-06-10 16:36:07.952 自定义搜索[4295:326175] obj ==== 3

2016-06-10 16:36:15.771 自定义搜索[4295:326175] obj ==== 2

2016-06-10 16:36:20.927 自定义搜索[4295:326175] obj ==== 1

3、数组排序

NSArray *arr = [NSArray arrayWithObjects:@"23",@"34",@"54",@"0",@"ef", nil];

NSArray *sortArr = [arr sortedArrayUsingSelector:@selector(compare:)];

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

logo日志:

2016-06-10 17:07:36.509 自定义搜索[4526:344425] sortArr ==== (

    0,

    23,

    34,

    54,

    ef

)

4、自定义排序

首先创建Person类 

@interface Person : NSObject

@property (nonatomic, copy) NSString *name;

@property (nonatomic, assign) NSInteger age;

+ (Person*)personWithAge:(int)age withName:(NSString *)name;

- (NSComparisonResult)comparePerson:(Person *)person;

@end

在.m文件中实现这两个方法

+ (Person *)personWithAge:(int)age withName:(NSString *)name

{

Person *p = [[Person alloc] init];

p.name = name;

p.age = age;

return p;

}

#pragma mark 自定义排序

- (NSComparisonResult)comparePerson:(Person *)person

{

// 默认按年龄排序

NSComparisonResult result = [[NSNumber numberWithInt:person.age] compare:[NSNumber numberWithInt:self.age]];

// 如果年龄相同,就按照姓名进行排序

if (result == NSOrderedSame) {

result = [self.name compare:person.name];

}

return result;

}

然后在控制器中实现以下方法

Person *p1 = [Person personWithAge:24 withName:@"zhangshiye"];

Person *p2 = [Person personWithAge:22 withName:@"lisi"];

Person *p3 = [Person personWithAge:25 withName:@"wangwu"];

Person *p4 = [Person personWithAge:25 withName:@"liwu"];

Person *p5 = [Person personWithAge:21 withName:@"liwuxue"];

NSArray *arrays = [NSArray arrayWithObjects:p1,p2,p3,p4,p5, nil];

NSArray *sortedArray = [arrays sortedArrayUsingSelector:@selector(comparePerson:)];

NSLog(@"排序后:%@",sortedArray);

5.利用Block语法进行排序

// 利用Block语法进行排序

NSArray *dataArr = [NSArray arrayWithObjects:@"1bc",@"4b6",@"123",@"789",@"3ef",

nil];

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

NSComparisonResult result = [obj1 compare:obj2];

return result;

}];

NSLog(@"排序后:%@",resultArr);

logo日志:

2016-06-10 17:33:32.221 自定义搜索[5100:363766] 排序后:(

    123,

    1bc,

    3ef,

    4b6,

    789

)

 

时间: 2025-01-02 18:42:00

iOS数组排列的相关文章

iOS数组使用

相关链接: ios数组基本用法和排序 NSArray 排序汇总 iOS 数组排序方法 IOS-筛选数组内的元素 关于EnumerateObjectsUsingBlock和for-in之间的较量 [iOS开发技术]NSPredicate谓词的用法 数组过滤

求数组排列的范围

问题描述:给定一个整数数组,将这个整数数组排列成一个整数,并且数组的每个元素都要用到,求所排列出的整数的范围. 分析:这是一个很有意思的题目,初看好像是要求所有排列情况的最小值和最大值,当然这样做也可以求出来,只不过时间复杂度过高, 另外还有一个问题是大数问题,所排列成的数可能范围很大,超过了基本数据类型所能表示的范围,因此需要转换为字符串处理. 下面详细介绍解法: 解法一:用排列法.也就是求出这个数组的全排列,然后求出这个排列的最小值和最大值.由于排列要用到递归实现, 递归一般消耗系统大量的时

IOS数组、字典、NSNumber 新写法—— @[]、@{}

IOS数组.字典.NSNumber 新写法—— @[].@{} //标准写法 NSNumber * number = [NSNumber numberWithInt:1]; NSArray * array = [NSArray arrayWithObjects:@"one", @"two", nil]; NSDictionary * dict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1&quo

使用队列对数组排列,基数排序

使用队列对数组排列,基数排序 /* * 使用队列对数组排列,基数排序 *对于0~99的数字,基数排序将数组集扫描两次. * 第一次按个位上的数字进行排序, * 第二次按十位上的数字进行排序 * */ function Queue(){ this.dataStore = [];//存放队列的数组,初始化为空 this.enqueue = enqueue;//向队列尾部添加一个元素 this.dequeue = dequeue;//删除队首的元素 this.theFront = theFront;/

IOS数组按中文关键字以字母序排序

本文转载至 http://blog.csdn.net/xunyn/article/details/7882087 iosobjective cuser框架通讯 IOS项目中会用到对通讯录的联系人或是会员按姓名为关键字排序,因为NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完成按A~Z的排序,这看起来是个头疼的问题,因为牵扯到汉字转为拼音,kmyhy给出一个较易实现的方法,获取汉字的首字的首字母,如将“王”变成“W”,完整文章(传送门). 其中他通过pinyinFirstLet

PHP数组排列

一.先看最简单的情况.有两个数组: $arr1 = array(1,9,5);$arr2 = array(6,2,4); array_multisort($arr1,$arr2); print_r($arr1); // 得到的顺序是1,5,9print_r($arr2); // 得到的顺序是6,4,2 我估计两个数组的值自始至终都是对应着的:1对应6,9对应2,5对应4. 我们再加多一个数组看看会怎样: $arr1 = array(1,9,5);$arr2 = array(6,2,4);$arr

JavaScript 二维数组排列组合2

<html> <head> <title>二维数组排列组合</title> </head> <body> <div id="showDiv"></div> </body> <script type="text/javascript"> var arrays = [ [ '1-1-雨尘', '1-2-芸芸', '1-3-简一', '1-4-乐乐' ]

iOS 循环排列按钮(数组排列按钮) 触发事件

//彩种按钮 listChuan = 1; NSMutableArray *showLabelArray = [NSMutableArray arrayWithCapacity:10]; for (int i = 0; i<7; i++) { listChuan++; NSString *chuanStr = [NSString stringWithFormat:@"%i选",listChuan]; [showLabelArray addObject:chuanStr]; } /

PHP 多个一维数组排列组合的所有可能

<?php // auth bin.chen 525945448 $a = array('A','B','Y'); $b = array('C','D','P'); $c = array('E','F','G'); $f = array('P','U','M'); $d = array($a,$b,$c,$f ); //计算每一个数组的长度 $len = 1; $arrLen = count($d); //需要排列数组有多少个 $recIndex = null; //记录当前该取的位置 fore