黑马程序员技术交流社区

标题: OC 冒泡法遍历问题 [打印本页]

作者: 水了个淼    时间: 2014-9-26 09:37
标题: OC 冒泡法遍历问题
NSArray *persons = @[
                             @{@"name" : [s1 name],
                               @"age" :[NSNumber numberWithInt:[s1 age]],
                               @"grade":[NSNumber numberWithInt:[s1 garde]]},
                             
                             @{@"name" : [s2 name],
                               @"age" :[NSNumber numberWithInt:[s2 age]],
                               @"grade":[NSNumber numberWithInt:[s2 garde]]},
                             @{@"name" : [s3 name],
                               @"age" :[NSNumber numberWithInt:[s3 age]],
                               @"grade":[NSNumber numberWithInt:[s3 garde]]},
                             
                             @{@"name" : [s4 name],
                               @"age" :[NSNumber numberWithInt:[s4 age]],
                               @"grade":[NSNumber numberWithInt:[s4 garde]]},
                             
                             @{@"name" : [s5 name],
                               @"age" :[NSNumber numberWithInt:[s5 age]],
                               @"grade":[NSNumber numberWithInt:[s5 garde]]},
                             
                             ];
  
     
        
        for (int i = 0; i < persons.count;  i++) {
            
            for (int j = 0; j < persons.count - i -1; j++) {
               
                id temp = nil;
                    if (persons[j][@"grade"] >persons[j+1][@"grade"] ) {
                        
                        
                        temp=persons[j+1][@"grade"];
                        persons[j+1][@"grade"]=persons[j][@"grade"];
                        persons[j][@"grade"]=temp;
                    }
               
            }
        }
作者: 水了个淼    时间: 2014-9-26 09:38
这个怎么会报错呢   s1 s2 s3 s4 s5 分别是创建的5个Person 对象

作者: SailY    时间: 2014-9-26 10:01
[s1 name],你确定这个写法正确?
作者: SailY    时间: 2014-9-26 10:04
#pragma mark - 冒泡排序
void BubbleSort(int a[], int n)
{
    for (int i = 0; i < n; i++)
        for (int j = i+1; j < n; j++)
            if (a[j] > a[i]) {
                int temp =a[i];
                a[i] = a[j];
                a[j] = temp;
            }
}

貌似j < persons.count - i -1最后一个数字没有参加比较
作者: wanyiyuan    时间: 2014-9-26 16:28
SailY 发表于 2014-9-26 10:04
#pragma mark - 冒泡排序
void BubbleSort(int a[], int n)
{

是 array[j] 和 array[ j + 1] 比较吧:L




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