美文网首页
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