可变数组与不可变数组的三种排序方法
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;
}
// 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;
}
相关文章推荐
- 删除排序数组中的重复元素(三种方法的比较)
- PHP中数组的三种排序方法
- IOS吐槽狂人:可变数组与不可变数组的排序方法调用
- PHP中数组的三种排序方法
- PHP中数组的三种排序方法分享
- OC-NSArray数组的三种遍历方式和排序方法
- 三种方法对java数组排序
- java数组中的三种排序方法中的冒泡排序方法
- iOS oc可变数组排序方法
- OC不可变数组排序方法
- JAVA4——数组的实现及数组的三种排序方法实现
- PHP中数组的三种排序方法分享
- Java 数组排序三种方法
- 数组遍历的三种方法以及数组排序的sort方法
- 对List数组进行排序的三种方法
- PHP中数组的三种排序方法分享
- 十种数组排序方法
- JavaScript 使用sort()方法来给数组排序
- 黑马程序员—反射调用main方法的问题总结(涉及可变参数)(反射参数是一个数组的函数要小心)
- 数组排序的常见方法