A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

- (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;  
}  
   

2 个回复

倒序浏览
我写的和你的不一样,假设数组中存放了几个对象,排序如下
  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.         }
复制代码
回复 使用道具 举报
加油加油,楼主努力啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马