zoukankan      html  css  js  c++  java
  • 数组排序

    NSArray *beforeSortArray = [[NSArray alloc] initWithObjects:
                                    @{@"id":@"1"},
                                    @{@"id":@"3"},
                                    @{@"id":@"4"},
                                    @{@"id":@"7"},
                                    @{@"id":@"8"},
                                    @{@"id":@"2"},
                                    @{@"id":@"6"},
                                    @{@"id":@"5"},
                                    @{@"id":@"13"},
                                    @{@"id":@"15"},
                                    @{@"id":@"12"},
                                    @{@"id":@"20"},
                                    @{@"id":@"28"},
                                    @{@"id":@""}
                                    ,nil];
        NSLog(@"排序前:%@",beforeSortArray);
    
        //方法一
        NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:@"id" ascending:YES];
        NSArray *sortArray = [NSArray arrayWithObject:sortDesc];
        [beforeSortArray sortedArrayUsingDescriptors:sortArray];
        
        NSLog(@"第一次排序前原来的数组:%@", beforeSortArray);
        NSArray *newArray = [beforeSortArray sortedArrayUsingDescriptors:sortArray];
        NSLog(@"第一次排序后原来的数组:%@", beforeSortArray);//看排序的时候,原数组元素顺序会不会改变
        NSLog(@"第一次排序后:%@",newArray);//验证排序结果
        
        
        //方法二
        NSComparator cmptr = ^(id obj1, id obj2){
            if ([[obj1 objectForKey:@"id"] integerValue] > [[obj2 objectForKey:@"id"] integerValue]) {
                return (NSComparisonResult)NSOrderedDescending;
            }
            
            if ([[obj1 objectForKey:@"id"] integerValue] < [[obj2 objectForKey:@"id"] integerValue]) {
                return (NSComparisonResult)NSOrderedAscending;
            }
            return (NSComparisonResult)NSOrderedSame;
        };
        
        NSLog(@"第二次排序前原来的数组:%@", beforeSortArray);
        NSArray *afterSortArray = [beforeSortArray sortedArrayUsingComparator:cmptr];
        NSLog(@"第二次排序后原来的数组:%@", beforeSortArray);//看排序的时候,原数组元素顺序会不会改变
        NSLog(@"第二次排序后:%@",afterSortArray);//验证排序结果

    总结:排序的时候,原数组的顺序不会改变,第一次的排序结果其实并不理想,没有达到想要的效果;还是建议大家多用第二种方法吧,数组的排序还有其他的几种写法,我不太熟,所以就没有写了,希望大家能多交流

  • 相关阅读:
    suseoj 1211: 子集和问题 (dfs)
    suseoj 1210: 会场安排问题 (贪心)
    suseoj 1209: 独立任务最优调度问题(动态规划)
    四级词汇(二)
    四级单词(一)
    nyoj 84-阶乘的0 (规律题)
    nyoj 83-迷宫寻宝(二) (计算几何, 叉积)
    nyoj 82-迷宫寻宝(一) (多重BFS)
    nyoj 79-拦截导弹 (动态规划)
    nyoj 78-圈水池 (凸包)
  • 原文地址:https://www.cnblogs.com/shidaying/p/4689864.html
Copyright © 2011-2022 走看看