您的位置:首页 > 其它

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

2013-08-19 16:01 316 查看
//

// 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: