//输入5个只包含字母或者数字的字符串,对其排序
//
// main.m
// 笔试练习
//
// Created by smartlei on 15/6/29.
// Copyright (c) 2015年 smartlei. All rights reserved.
//
//
//输入5个字符串(数字和字母) 对其排序
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
char str[5][100];
for (int i=0;i<5;i++)
{
NSLog(@"请输入5个字符串中的第%d\n",i+1);
scanf("%s",&str[i][100]);
}
NSString *mystr[5];
for (int i=0; i<5; i++)
{
mystr[i]=[NSString stringWithFormat:@"%s",&str[i][100]];
}
// NSString *str0=[NSString stringWithFormat:@"%s",&str[0][100]];
for (int i=0; i<5; i++)
{
NSLog(@"输入的字符串:%@\n",mystr[i]);
}
NSArray *myArray=[NSArray arrayWithObjects:mystr[0],mystr[1],mystr[2],mystr[3],mystr[4],nil];
//第一种方法selector方法:@selector(compare:)
// NSArray *sortArray=[myArray sortedArrayUsingSelector:@selector(compare:)];
//第二种方法代码块方法:^(id obj0,id obj1){return [obj0 compare:obj1];}
// NSArray *sortArray=[myArray sortedArrayUsingComparator:^(id obj0,id obj1){return [obj0 compare:obj1];}];
//第三种方法SortDescriptor描述符方法:
//
NSSortDescriptor *strDescriptor=[NSSortDescriptor sortDescriptorWithKey:nil ascending:YES ];
NSArray *sortDescriptor=[NSArray arrayWithObjects:strDescriptor, nil];
NSArray *sortArray=[myArray sortedArrayUsingDescriptors:sortDescriptor];
for(NSString *element in sortArray)
{
NSLog(@"%@\n",element);
}
}
return 0;
}
总结:
对指定NSArray的对象数组排序
1)如果只有一种属性
则可以使用下列方法:
第一种方法:使用selector方法(只能排序字符串数组)
第二种方法:使用代码块方法(本质也是排序字符串数组,但是如果排序数字需要自己转化排序结果NSOrderedDescending)
第三种方法:使用排序描述符方法
2)对对象多种属性排序
最好使用NSSortDescriptor
详细参见:数组排序方式http://blog.csdn.net/crt3d14e5/article/details/46474265