美文网首页runtime.runloop
ios算法之冒泡排序算法

ios算法之冒泡排序算法

作者: 90后的晨仔 | 来源:发表于2021-02-05 17:07 被阅读0次

    百度百科解释
    通过不断的走访需要排序的元素,依次比较两个相邻的元素。如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。这样重复的进行直到没有相邻元素需要交换,就算元素排序完成。名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名冒泡排序

    • oc版本如下

    oc Demo地址

    #pragma mark - 冒泡排序
    - (void)bubbleSortMethod{
        
        int iCount  = 0;//记录外层循环的次数
        int jCount  = 0;//记录内存循环交换的次数
         NSMutableArray *array = [NSMutableArray arrayWithArray:@[@10,@1,@2,@9,@7,@19,@5,@3,@8,@13,@17]];
        NSInteger arrCount = array.count - 1;
        for (int i = 0; i < arrCount; i++) {//外层for循环控制循环次数
               iCount++;
            for (int j = 0; j < arrCount - i; j++) { //内层for循环控制交换次数
                jCount++;
                if ([array[j] intValue] > [array[j + 1] intValue]) {
                    [array exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
                }
                [self showBubbleSortResult:array];
            }
        }
        NSLog(@"循环次数:%d",iCount);
        NSLog(@"共%d次比较",jCount);
    }
    
    //打印数组
    - (void)showBubbleSortResult:(NSMutableArray * )array {
        NSString * str = @"";
        for (NSNumber * value in array) {
           str = [str stringByAppendingString:[NSString stringWithFormat:@"%zd ",[value integerValue]]];
        }
        NSLog(@"%@",str);
        NSLog(@"<=============>");
    }
    
    • swift版本如下

    
    /// Mark - 冒泡算法
    func bubbleSortMethod(_ nums: inout [Int]) {
        var iCount = 0;//记录外层循环的次数
        var jCount = 0;//记录内存循环交换的次数
        let n = nums.count
        for i in 0..<n {
            iCount += 1
            for j in 0..<(n - 1 - i) {
                jCount += 1
                if nums[j] > nums[j + 1] {
                    nums.swapAt(j, j + 1)
                    print(nums)
                    print("============")
                }
            }
        }
        print("外层次数:\(iCount)","交换次数:\(jCount)")
    }
     
    var nums = [10,1,2,9,7,19,5,3,8,13,17]
    bubbleSortMethod(&nums)
    

    swift Demo地址

    相关文章

      网友评论

        本文标题:ios算法之冒泡排序算法

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