方式一:
//冒泡排序
void bubbleSort(){
NSMutableArray *p = [[NSMutableArray alloc] initWithObjects:@"7",@"9", @"3",@"5",@"4",@"1",nil];
for (int i = 0; i<[p count]; i++)
{
for (int j=i+1; j<[p count]; j++)
{
int a = [[p objectAtIndex:i] intValue];
int b = [[p objectAtIndex:j] intValue];
if (a < b)
{
[p replaceObjectAtIndex:i withObject:[NSString stringWithFormat:@"%d",b]];
[p replaceObjectAtIndex:j withObject:[NSString stringWithFormat:@"%d",a]];
}
}
}
NSLog(@"排序后:%@",p);
}
方式二:
//选择排序
void selectSortWithArray(){
NSMutableArray *data = [[NSMutableArray alloc]initWithObjects:@"7",@"9", @"3",@"5",@"4",@"1", nil];
for (int i=0; i<[data count]-1; i++) {
int m =i;
for (int j =i+1; j<[data count]; j++) {
if ([data objectAtIndex:j] < [data objectAtIndex:m]) {
m = j;
}
}
if (m != i) {
NSNumber *tmp = [data objectAtIndex:m];
[data replaceObjectAtIndex:m withObject:[data objectAtIndex:i]];
[data replaceObjectAtIndex:i withObject:tmp];
}
}
NSLog(@"选择排序后的结果:%@",[data description]);
}
方式三:
//插入排序
void insertSortWithArray(){
NSMutableArray *data = [[NSMutableArray alloc]initWithObjects:@"7",@"9", @"3",@"5",@"4",@"1",nil];
for (int i = 1; i < [data count]; i++) {
id tmp = [data objectAtIndex:i];
int j = i-1;
while (j != -1 && [data objectAtIndex:j] > tmp) {
[data replaceObjectAtIndex:j+1 withObject:[data objectAtIndex:j]];
j--;
}
[data replaceObjectAtIndex:j+1 withObject:tmp];
}
NSLog(@"插入排序后的结果:%@",[data description]);
}
方式四:
//快速排序
- (void)quickSort:(NSMutableArray *)arr leftIndex:(NSInteger)left rightIndex:(NSInteger)right
{
if (left < right) {
NSInteger temp = [self getMiddleIndex:arr leftIndex:left rightIndex:right];
[self quickSort:arr leftIndex:left rightIndex:temp - 1];
[self quickSort:arr leftIndex:temp + 1 rightIndex:right];
}
NSLog(@"快速排序后:%@",arr);
}
- (NSInteger)getMiddleIndex:(NSMutableArray *)arr leftIndex:(NSInteger)left rightIndex:(NSInteger)right
{
NSInteger tempValue = [arr[left] integerValue];
while (left < right) {
while (left < right && tempValue <= [arr[right] integerValue]) {
right --;
}
if (left < right) {
arr[left] = arr[right];
}
while (left < right && [arr[left] integerValue] <= tempValue) {
left ++;
}
if (left < right) {
arr[right] = arr[left];
}
}
arr[left] = [NSNumber numberWithInteger:tempValue];
return left;
}
方式五:
//简单排序
void simpleSortArray(){
NSArray *array = [NSArray arrayWithObjects:@"abc",@"456",@"123",@"789",@"ef", nil];
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"排序后:%@",sortedArray);
}
//利用block语法
void blockSortArray(){
NSArray *array = [NSArray arrayWithObjects:@"1bc",@"4b6",@"123",@"789",@"3ef", nil];
NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
//这里的代码可以参照上面compare:默认的排序方法,也可以把自定义的方法写在这里,给对象排序
NSComparisonResult result = [obj1 compare:obj2];
return result;
}];
NSLog(@"排序后:%@",sortedArray);
}