首页 > 代码库 > 数组的几种排序方式
数组的几种排序方式
// 1.使用NSComparator排序 { // 产生随机数 NSMutableArray *unsortDataM = [NSMutableArray array]; for (NSInteger index = 0; index < 20; index++) { int random = arc4random()%20; [unsortDataM addObject:@(random)]; } NSLog(@"使用NSComparator排序前的数据:%@",unsortDataM); NSArray *sortedData = http://www.mamicode.com/[unsortDataM sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { NSInteger value1 = (NSInteger)obj1; NSInteger value2 = (NSInteger)obj2; if (value1 < value2) { return NSOrderedAscending; }else { return NSOrderedDescending; } }]; NSLog(@"使用NSComparator排序后的数据:%@",sortedData); } // 2.使用NSDescriptor排序 { Person *person1 = [[Person alloc] init]; person1.age = 39; person1.height = 178; Person *person2 = [[Person alloc] init]; person2.age = 25; person2.height = 165; Person *person3 = [[Person alloc] init]; person3.age = 55; person3.height = 170; Person *person4 = [[Person alloc] init]; person4.age = 15; person4.height = 165; Person *person5 = [[Person alloc] init]; person5.age = 38; person5.height = 177; NSMutableArray *unsortDataM = [NSMutableArray arrayWithObjects:person1,person2,person3,person4,person5, nil]; NSLog(@"使用NSDescriptor排序前的数据:%@",unsortDataM); NSSortDescriptor *firstDescriptor = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES]; NSSortDescriptor *secondDescriptor = [[NSSortDescriptor alloc] initWithKey:@"height" ascending:YES]; // 第一优先级先按照年龄排,年龄相同的按照第二优先级排序 NSArray *sortArray = [NSArray arrayWithObjects:firstDescriptor,secondDescriptor,nil]; NSArray *sortedData =http://www.mamicode.com/ [unsortDataM sortedArrayUsingDescriptors:sortArray]; NSLog(@"使用NSDescriptor排序后的数据"); for (Person *person in sortedData) { NSLog(@"age:%d,height:%d",person.age,person.height); } } // 3.使用函数排序 { // 产生随机数 NSMutableArray *unsortDataM = [NSMutableArray array]; for (NSInteger index = 0; index < 20; index++) { int random = arc4random()%20; [unsortDataM addObject:@(random)]; } NSLog(@"使用函数排序前的数据:%@",unsortDataM); NSArray *sortedData =http://www.mamicode.com/ [unsortDataM sortedArrayUsingFunction:customSort context:nil]; NSLog(@"使用函数排序后的数据:%@",sortedData); }
#pragma mark - 排序函数 NSInteger customSort(id obj1, id obj2,void* context) { int value1 = (int)obj1; int value2 = (int)obj2; if (value1 < value2) { return (NSComparisonResult)NSOrderedAscending; } if (value1 > value2) { return (NSComparisonResult)NSOrderedDescending; } return (NSComparisonResult)NSOrderedSame; }
demo地址:https://github.com/HZChenCheng/SortArray
数组的几种排序方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。