算法步骤
比较相邻的元素,如果第一个比第二个大,就交换他们两个
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这步昨晚后,最后的元素会是最大的数
针对所有的元素重复以上的步骤,除了最后一个
持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较
演示
最快与最慢
最快:
当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊)。
最慢:
当输入的数据是反序时(写一个 for 循环反序输出数据不就行了,干嘛要用你冒泡排序呢,我是闲的吗)。
代码实现
NSMutableArray * arr = @[@16,@1,@2,@9,@7,@12,@5,@3,@8,@13,@10].mutableCopy;
for (int i = 0; i < arr.count; i++) {
for (int j = (int)arr.count-2; j >= i; j--) {
if ([arr[j] integerValue] < [arr[j+1] integerValue]) {
[arr exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}