数组排序 --------- 冒泡排序
C
语言的冒泡排序,在之前的学习中已有 http://blog.csdn.net/cherry_711/article/details/49888961
这次学习的 排序是OC基础的,但是不可以直接拿整型来放入数组,且在比较时要将数组元素的整型值取出进行比较。具体实现如下:
NSMutableArray *mstr = [ NSMutableArray arrayWithObjects :
[ NSNumber numberWithInt : 12 ],
[ NSNumber numberWithInt : 54 ],
[ NSNumber numberWithInt : 711 ],
[ NSNumber numberWithInt : 125 ],
[ NSNumber numberWithInt : 69 ],
[ NSNumber numberWithInt : 1245 ],
[ NSNumber numberWithInt : 154 ],
[ NSNumber numberWithInt : 78 ],
[ NSNumber numberWithInt : 76 ],
[ NSNumber numberWithInt : 95 ], nil ];
for ( int i = 0 ; i < mstr. count - 1 ; i++) {
for ( int j = 0 ; j < mstr. count - i - 1 ; j++) {
//1现将数组元素取出,再将元素的值取出
NSNumber *num1 = [mstr objectAtIndex :j];
int Num1 = [num1 intValue ];
NSNumber *num2 = [mstr objectAtIndex :j + 1 ];
int Num2 = [num2 intValue ];
这次学习的 排序是OC基础的,但是不可以直接拿整型来放入数组,且在比较时要将数组元素的整型值取出进行比较。具体实现如下:
NSMutableArray *mstr = [ NSMutableArray arrayWithObjects :
[ NSNumber numberWithInt : 12 ],
[ NSNumber numberWithInt : 54 ],
[ NSNumber numberWithInt : 711 ],
[ NSNumber numberWithInt : 125 ],
[ NSNumber numberWithInt : 69 ],
[ NSNumber numberWithInt : 1245 ],
[ NSNumber numberWithInt : 154 ],
[ NSNumber numberWithInt : 78 ],
[ NSNumber numberWithInt : 76 ],
[ NSNumber numberWithInt : 95 ], nil ];
for ( int i = 0 ; i < mstr. count - 1 ; i++) {
for ( int j = 0 ; j < mstr. count - i - 1 ; j++) {
//1现将数组元素取出,再将元素的值取出
NSNumber *num1 = [mstr objectAtIndex :j];
int Num1 = [num1 intValue ];
NSNumber *num2 = [mstr objectAtIndex :j + 1 ];
int Num2 = [num2 intValue ];
if
(Num1 > Num2) {
[mstr exchangeObjectAtIndex :j withObjectAtIndex :j + 1 ];
}
}
}
[mstr exchangeObjectAtIndex :j withObjectAtIndex :j + 1 ];
}
}
}
//将排好的数组输出在控制台
for ( int i = 0 ; i < mstr. count ; i++) {
NSLog ( @"mstr[%d] = %@" ,i , mstr[i]);
}
for ( int i = 0 ; i < mstr. count ; i++) {
NSLog ( @"mstr[%d] = %@" ,i , mstr[i]);
}
上面将数组元素取出,如果嫌麻烦的话,可以直接进行比较
// 2直接取元素的值
if([mstr[j] intValue] > [mstr[j +1] intValue]) {
[mstr exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
if([mstr[j] intValue] > [mstr[j +1] intValue]) {
[mstr exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
}
简化型的:若有不足之处,欢迎指导,一块学习!!
NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"3",@"1",@"10",@"5",@"2",@"7",@"12",@"4",@"8"]];
for (int i = 0; i < array.count; i ++) {
for (int j = 0; j < array.count - 1 - i; j++) {
if([[array objectAtIndex:j] integerValue] > [[array objectAtIndex:j + 1] integerValue]) {
[array exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
}
} }
NSLog(@"%@", array);