ios冒泡排序

//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移动到最后面的过程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容