黑马程序员技术交流社区

标题: 关于关于自定义对象按照一定的格式排序的实现 [打印本页]

作者: UKnowINeedYou    时间: 2016-4-9 00:17
标题: 关于关于自定义对象按照一定的格式排序的实现
- (NSComparisonResult)comparestu:(Student *)stu     //排序规则
{  

      
    NSComparisonResult result = [[NSNumber numberWithInt:stu.score]compare:[NSNumber numberWithInt:self.score]];  //先按分数来排名
   
    if (result == NSOrderedSame) {    //如果分数相同 按年龄  
        result = [[NSNumber numberWithInt:stu.age]compare:[NSNumber numberWithInt:self.age]];

        if(result == NSOrderedSame) // 如果年龄一样,就按姓名排序  
        {  
            //如果年龄相同按姓名  
            result = [self.name compare:stu.name];  
        }  
    }  
    return result;  
}  
   
作者: muzipiao    时间: 2016-4-9 09:40
我写的和你的不一样,假设数组中存放了几个对象,排序如下
  1. //利用循环便利数组
  2.         for (int i=0; i<[mArr count]-1; i++) {
  3.             for (int j=i+1; j<[mArr count]; j++) {
  4.                 //按照成绩排序由大到小排序
  5.                 if ([mArr[i] getScore]<[mArr[j] getScore]) {
  6.                     [mArr exchangeObjectAtIndex:i withObjectAtIndex:j];
  7.                 }else if([mArr[i] getScore]==[mArr[j] getScore]){
  8.                     //成绩相同按照年龄排序由大到小排序
  9.                     if ([mArr[i] getAge]<[mArr[j] getAge]) {
  10.                         [mArr exchangeObjectAtIndex:i withObjectAtIndex:j];
  11.                     }else if([mArr[i] getAge]==[mArr[j] getAge]){
  12.                         //年龄相同,按照姓名排序由大到小排序
  13.                         if([[mArr[i] getName] compare:[mArr[j] getName]]<0){
  14.                             [mArr exchangeObjectAtIndex:i withObjectAtIndex:j];
  15.                         }
  16.                     }
  17.                 }
  18.             }
  19.         }
复制代码

作者: 妖精的尾巴_wzn    时间: 2016-5-8 00:09
加油加油,楼主努力啊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2