Swift -冒泡排序

demo下载地址

原理解析

不断比较相邻的两个元素,如果它们的顺序不符合要求就互相调换。

问题描述:

把数组 [61,5,33,44,22] 进行从小到大进行排序

解题步骤

步骤如下:

  • 比较相邻的元素。如果第一个比第二个大,就交换他们两个,直到把最大的元素放到数组尾部。
  • 遍历长度减一,对剩下的元素从头重复以上的步骤。
  • 直到没有任何一对数字需要比较时完成。

代码:

//冒泡排序
    func  p_bubbleSort(array:inout [Int]) -> [Int] {
        
        guard array.count > 1 else {
            return array
        }
        for i in 0..<(array.count - 1) {//外层循环为 数组长度 - 1
            
            for j in 0..<(array.count - 1 - i) {// 内层循环为 外层循环 - i
                
                if array[j] > array[j + 1] {// 冒泡操作
                    
                    array.swapAt(j, j + 1)
                    
                }
            
            }
        
        }
        return array
    }
    

测试:

 @objc func p_bubbleSort() {
        var list = [61,5,33,44,22]
        let result = p_bubbleSort(array: &list)
        print(result)
    }

结果:

[5, 22, 33, 44, 61]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,下面是 Swift 写的冒泡排序代码: ``` func bubbleSort(_ array: inout [Int]) { for i in 0..<array.count { for j in 1..<array.count-i { if array[j] < array[j-1] { let temp = array[j-1] array[j-1] = array[j] array[j] = temp } } } } var list = [10, -1, 3, 9, 2, 27, 8, 5, 1, 3, 0, 26] bubbleSort(&list) print(list) ``` 在代码中,我们通过两重循环,从前往后比较相邻的两个数,如果需要交换,就交换。循环多次后,最大的数会“冒泡”到最后。 ### 回答2: 冒泡排序是一种简单直观的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,如果顺序错误则交换它们,直到没有元素需要交换为止。下面是用 Swift 实现冒泡排序的代码: ```Swift func bubbleSort(_ array: inout [Int]) { let count = array.count guard count > 1 else { return } for i in 0..<count - 1 { for j in 0..<count - 1 - i { if array[j] > array[j + 1] { array.swapAt(j, j + 1) } } } } // 测试示例 var numbers = [5, 2, 9, 1, 8] bubbleSort(&numbers) print(numbers) // 输出:[1, 2, 5, 8, 9] ``` 在上述代码中,我们先定义一个名为 `bubbleSort` 的函数,它接受一个传入的整型数组作为参数,并使用 `inout` 关键字使得传入的参数能够被修改。然后,我们获取数组的长度,并通过两层嵌套的 `for` 循环来遍历数组进行比较和交换。 内层的循环中,我们使用 `array[j] > array[j + 1]` 来比较相邻的两个元素的大小关系,如果前一个元素大于后一个元素,则交换它们的位置。 外层的循环用于控制比较和交换的次数,每次循环将会把当前未排序的最大元素移动到末尾,因此,最多需要比较 `count - 1` 次。 最后,我们可以使用给定的示例测试用例来验证我们的冒泡排序算法的正确性。 ### 回答3: 冒泡排序是一种简单的排序算法,它可以通过不断比较相邻的元素并交换位置来实现排序。以下是使用Swift编写的冒泡排序算法代码: ```swift func bubbleSort(_ nums: inout [Int]) { let n = nums.count var swapped = false for i in 0..<n-1 { swapped = false for j in 0..<n-i-1 { if nums[j] > nums[j+1] { nums.swapAt(j, j+1) swapped = true } } if !swapped { break } } } // 测试算法 var nums = [5, 2, 8, 1, 3] bubbleSort(&nums) print(nums) // 输出 [1, 2, 3, 5, 8] ``` 在上述代码中,我们定义了一个bubbleSort函数,它接受一个整数数组nums作为参数,并使用inout关键字将其标记为可修改。这是因为我们将在函数内部修改数组。 我们还定义了一个布尔变量swapped,用于检测是否进行了交换。如果在一趟循环中没有进行任何交换,则说明数组已经排序完成,可以提前终止排序过程。 在外部的第一个循环中,我们需要迭代n-1次,每次迭代可以确定一个最大的元素放在数组的末尾。然后在内部的第二个循环中,我们将当前元素与下一个元素进行比较,如果前者大于后者,则交换它们的位置。 最后,我们在外部循环结束后检查是否进行了交换,如果没有,则说明数组已经排好序,可以提前结束排序。 以上是使用Swift编写冒泡排序的示例代码。希望对你有帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值