可变数组与不可变数组的三种排序方法

//

//  main.m

//  paixu

//

//  Created by 4_5 on 13-8-19.

//  Copyright (c) 2013 南阳理工学院. All rights reserved.

//


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[])

{


    @autoreleasepool {

        

        NSArray *array =[[NSArray alloc]initWithObjects:[NSNumber numberWithInt:0], [NSNumber numberWithInt:5],[NSNumber numberWithInt:1],[NSNumber numberWithInt:2],[NSNumber numberWithInt:4],nil] ;

        NSLog(@"排序前");

        for (NSNumber *num in array ) {

            NSLog(@"%d",[num intValue]) ;

            }

        //第一种排序   使用描述符进行排序

        NSSortDescriptor *sdl = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES] ;

       // NSArray *descripors = [NSArray arrayWithObject:sdl] ;

        //[array sortUsingDescriptors:descripors] ;

        NSArray *array2 = [array sortedArrayUsingDescriptors:[NSArray arrayWithObject:sdl]] ;

//        [array release];

        NSLog(@"对不可变数组进行描述排序:");

        for (NSNumber *num in array2 ) {

            NSLog(@"%d",[num intValue]) ;

        }

        //第二种方法  使用选择器进行排序

        NSLog(@"不可变数组使用选择器进行排序后:");

        NSArray *array3  = [array sortedArrayUsingSelector:@selector(compare:)] ;

        for (NSNumber *num in array3) {

            NSLog(@"%d",[num intValue]) ;

        }

        //第三种方法  使用代码块进行排序

        NSArray *array4 = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

            NSComparisonResult result ;


            if (obj1>obj2) {

                result = NSOrderedDescending ;

            }

            else if(obj1<obj2)

            {

                result = NSOrderedAscending ;

            }

            else

                result = NSOrderedSame ;

            return result ;

        }] ;

        NSLog(@"对不可变数组进行代码块排序后");

        for (id obj in array4) {

            NSLog(@"%@",obj) ;

        }

        

        

        //下面是可变数组

        //第一种方法 利用描述符进行排序

        NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:5] ;

        [mArray addObject:[NSNumber numberWithInt:6]] ;

        [mArray addObject:[NSNumber numberWithInt:9]] ;

        [mArray addObject:[NSNumber numberWithInt:7]] ;

        [mArray addObject:[NSNumber numberWithInt:8]] ;

        [mArray addObject:[NSNumber numberWithInt:5]] ;

        NSSortDescriptor *sdl1 = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES] ;

        NSArray *descripts = [NSArray arrayWithObject:sdl1] ;

        [mArray sortUsingDescriptors:descripts] ;

        NSLog(@"可变数组排序后");

        for (NSNumber *num in mArray) {

            NSLog(@"%d",[num intValue]) ;

        }

        

        //第二种方法 使用选择器进行排序

        NSMutableArray *mArray1 = [NSMutableArray arrayWithCapacity:5] ;

        [mArray1 addObject:[NSNumber numberWithInt:6]] ;

        [mArray1 addObject:[NSNumber numberWithInt:9]] ;

        [mArray1 addObject:[NSNumber numberWithInt:7]] ;

        [mArray1 addObject:[NSNumber numberWithInt:8]] ;

        [mArray1 addObject:[NSNumber numberWithInt:5]] ;

        [mArray1 sortUsingSelector:@selector(compare:) ];

        NSLog(@"使用选择器排序后:");

        for (NSNumber *num in mArray1) {

            NSLog(@"%d",[num intValue]) ;

        }

        //第三种方法  使用代码块进行排序

        NSMutableArray *mArray2 = [NSMutableArray arrayWithCapacity:5] ;

        [mArray2 addObject:[NSNumber numberWithInt:6]] ;

        [mArray2 addObject:[NSNumber numberWithInt:9]] ;

        [mArray2 addObject:[NSNumber numberWithInt:7]] ;

        [mArray2 addObject:[NSNumber numberWithInt:8]] ;

        [mArray2 addObject:[NSNumber numberWithInt:5]] ;

        [mArray2 sortUsingComparator:^NSComparisonResult(id ob1,id ob2){

            NSComparisonResult result ;

            if (ob1>ob2) {

                result = NSOrderedDescending ;

            }

            else if(ob1<ob2)

            {

                result = NSOrderedAscending ;

            }

            else

            {

                result = NSOrderedSame ;

            }

            return result ;

            

            

        }];

        NSLog(@"使用代码块排序后");

        for (id obj in mArray2) {

            NSLog(@"%@",obj) ;

        }

        

}

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值