美文网首页
iOS 冒泡排序

iOS 冒泡排序

作者: XZ_Henry | 来源:发表于2017-11-29 18:50 被阅读17次

    iOS 冒泡排序

    // 是按从小到大的顺序排列的
        // 首先有一个数组
        NSMutableArray *array = @[].mutableCopy;
        // 需要一组数据
        for (int i = 0; i < 100; i++) {
            int num = arc4random()%100;
            [array addObject:@(num)];
        }
        // 用set是因为他的特性就是保证数据唯一,不会有重复的数据
        // 用set也就省下了去重的代码
        NSMutableSet *set = [NSMutableSet set];
        for (NSNumber *num in array) {
            [set addObject:num];
        }
        // set数组里面得到去重之后的数据,就要把之前得到的数据清空
        [array removeAllObjects];
        // 之所以再写一个for循环是因为,set里面的数据是无序的,没有下标,所以只能把set里面的数据放到有序的数组里面
        for (NSNumber *num in set) {
            [array addObject:num];
        }
        // 接着就是进行排序
        // t是用来记录需要替换的值,下面会用到
        NSInteger t = 0;
        // 这里的思想就是把每一个数字取出来,与后面的比较,如果前面的值比较大,就把这两个值作交换。
        // 如果遇到后面的值比前面的值大,就不再进行交换,而是用下一个值来进行比较交换,知道数组当中的最后位置
        // 等到最外层的循环结束,排序就结束了
        for (NSInteger i = 0; i < array.count - 1; i++) {
            // 这里之所以多减去一个i,是因为最小的值已经在最后面了,所以也就不需要再去比较
            for (NSInteger j = 0; j < array.count - 1 - i; j++) {
                // 这里的大于号如果改成小于号,就是从大到小排序
                if (array[j] > array[j+1]) {
                    t = [array[j] integerValue];
                    array[j] = array[j+1];
                    array[j+1] = @(t);
                }
            }
        }
        // 最后输出结果
        NSString *str = [NSString stringWithFormat:@""];
        str = [array componentsJoinedByString:@","];
        NSLog(@"%@",str);
    

    结果:

    611511952572_.pic.jpg

    相关文章

      网友评论

          本文标题:iOS 冒泡排序

          本文链接:https://www.haomeiwen.com/subject/vjzsnttx.html