//OC的冒泡排序
- (void)GHPocmp{
NSMutableArray *array = [[NSMutableArray alloc]initWithArray: @[@"8",@"2",@"5",@"3",@"6",@"4"]];
for (int j = 1; j < array.count; j++) {
//array.count-j j从1开始 是为了防止数组越界
//循环一次把最大的一个数排在最后面
//下次循环的时候就把最后那个数给忽略了,不比较他了,因为他比前面的数字都大;所以每次都-j
//再粗俗点说就是
//第一次循环把最大的数放到了最后 8
//跌二次循环把倒数第二大的数放到了倒数第二位 6,8
// 5,6,8
// 4,5,6,8
// 3,4,5,6,8
//2,3,4,5,6,8
for (int i = 0; i < array.count-j; i++) {
if ([array[i] integerValue]>[array[i+1] integerValue]) {
[array exchangeObjectAtIndex:i withObjectAtIndex:i+1];
//冒泡排序由小到大排序
//1.循环比较第i个和i+1个大小,如果i>i+1则交换它俩的位置
//一次循环下来把最大的数字排到了最后面
//比如说这几个数字
//@"8",@"2",@"5",@"3",@"6",@"4"
/** 第一次循环 i=0; i<array.count-1;
结果是 2,5,3,6,4,8
*/
/** 第二次循环 i=0; i<array.count-2;
因为-2 这里相当于只对2,5,3,6,4进行排序 8忽略不比较;
结果是 2,3,5,4,6,8
*/
/** 第三次循环 i=0; i<array.count-3;
因为-2 这里相当于只对2,3,5,4进行排序 6,8忽略不比较;
结果是 2,3,4,5,6,8
*/
}
}
NSLog(@"第%d次排序结果:%@",j,array);
}
}
把8移动到最后面的过程