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