1、针对数组简单元素排序
数组元素为字符串或基本数据类型时,可直接使用系统定义的函数进行排序
NSString类具有(compare:)(caseInsensitiveCompare:)(localizedStandardCompare:)方法。
compare:区分大小写
caseInsensitiveCompare: 不区分大小写
localizedStandardCompare:根据当前语言环境的语言规则进行排序(语言环境可能会根据大小写,变音符号等等的顺序而发生改变)
NSArray *arr=@[@"2",@"4",@"3",@"8",@"6",@"5"];
NSArray *resultAgeArray = [arr sortedArrayUsingSelector:@selector(compare:)];
输出结果:2、3、4、5、6、8
NSArray *arr=@[@"d",@"a",@"f",@"b",@"c",@"e"];
NSArray *resultAgeArray = [arr sortedArrayUsingSelector:@selector(compare:)];
输出结果:a、b、c、d、e、f
2、针对数组存字典或者model以它们里面的某个值排序
算法题:对数组进行排序,数组中放的都是Person对象,Person有name(全英文),age两个属性,要求以name为第一个优先级,age为第二个优先级,对数组中的person进行排序。优先排序name,name一致时对age进行排序
Person *p1=[[Person alloc] init];
p1.name=@"ddd";
p1.age=12;
Person *p2=[[Person alloc] init];
p2.name=@"aaa";
p2.age=18;
Person *p3=[[Person alloc] init];
p3.name=@"ggg";
p3.age=13;
Person *p4=[[Person alloc] init];
p4.name=@"ddd";
p4.age=16;
Person *p5=[[Person alloc] init];
p5.name=@"ddd";
p5.age=14;
Person *p6=[[Person alloc] init];
p6.name=@"ff";
p6.age=6;
NSMutableArray *originalArray=[[NSMutableArray alloc] initWithObjects:p1,p2,p3,p4,p5,p6, nil];
//创建排序规则NSSortDescriptor
//key :按照name属性 升序排序
NSSortDescriptor *sort1 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
//name 相同 按照age属性 升序排序
NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
//给数组添加排序规则
[originalArray sortUsingDescriptors:@[sort1,sort2]];
输出结果:p2、p1、p5、p4、p6、p3
3、针对数组存model排序
4、针对字典以key排序
5、针对字典以值排序