iOS基础知识之排序

Posted bky2016

tags:

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

1.字符串比较

1 - (NSComparisonResult)compare:(NSString *)str;

例如:

1 NSString *str1 = @"zhangsan";
2 NSString *str2 = @"susan";
3 NSComparisonResult result = [str1 compare:str2];

 

2.数组的自定义排序

1 NSArray *arr = [NSArray array];
2 [arr sortUsingSelector:@selector(自定义的比较方法)];

此处自定义的比较方法参照NSString中compare:方法进行设计。
例如设计一个Student类,其中包含name和age两个属性,若设计按照年龄进行比较的方法,则代码如下:

代码声明为:

1 - (NSComparisonResult)compareStudent:(Student *)s;

代码实现为:

1 - (NSComparisonResult)compareStudent:(Student *)s {
2     if(self.age > s.age){
3         return NSOrderedDescending;
4     }else if(self.age < s.age) {
5         return NSOrderedAscending;
6     }else{
7         return NSOrderedSame;
8     }
9 }

注意:上述方法的声明和实现全是在Student类中实现。
调用比较方法的代码为:

1 [arr sortUsingSelector:@selector(compareStudent:)];//arr中存放了n个student对象

 

3.多属性比较的数组排序

1 //描述器:第一个参数表示待比较的属性名称,第二个参数为YSE表示为升序,否则为降序
2 NSSortDescriptor *ageDes = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
3 NSSortDescriptor *nameDes = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
4 [arr sortUsingDescriptors:@[ageDes,nameDes]];//表示先按照年龄排序,然后按照名字排序

 



以上是关于iOS基础知识之排序的主要内容,如果未能解决你的问题,请参考以下文章

Java语言基础之方法的设计

《C#零基础入门之百识百例》(二十二)数组排序 -- 冒泡排序

《C#零基础入门之百识百例》(二十四)数组排序 -- 插入排序

《C#零基础入门之百识百例》(二十三)数组排序 -- 选择排序

重温基础算法内部排序之归并排序法

重温基础算法内部排序之希尔排序法