Swift实现冒泡排序算法程序
在Swift中,冒泡排序算法是最简单的排序算法。该算法通过反复比较相邻的元素,如果它们不在正确的位置,就交换它们的位置来排序元素。该算法仅适用于少量元素,不适用于大量元素,因为它的平均和最坏情况下的时间复杂度很高。因此,冒泡排序的工作原理是:
假设我们有以下数组:
现在我们使用冒泡排序将数组按升序排序。从第一个索引开始,我们比较第一个和第二个元素。如果第一个元素大于第二个元素,则我们交换这两个元素的位置。类似地,比较第二个和第三个元素,如果第二个元素大于第三个元素,则交换这两个元素的位置。这个过程一直持续到最后一个未排序的元素。
第一轮迭代
第二轮迭代
在第二轮迭代中,我们必须对最后一个元素重复相同的步骤。
这就是我们使用冒泡排序对数组进行排序的方式。
算法
步骤1 - 创建一个函数,使用冒泡排序算法按升序排序数组。
步骤2 - 在函数内部,我们运行嵌套的for-in循环来遍历给定数组中每对相邻元素。
步骤3 - 检查array[y]>array[y+1]。如果是,则交换这两个元素的位置。如果不是,则移动到下一对。
步骤4 - 现在在函数外部创建一个整数类型的数组。
步骤5 - 调用函数并将数组传递给它。
步骤6 - 打印排序后的数组。
示例
在下面的示例中,我们将创建一个名为myBubbleSort()的函数。此函数接受一个数组作为输入,并使用冒泡排序算法将给定数组按升序排序。此函数使用嵌套的for-in循环迭代给定数组中的每对相邻元素,如果第一个元素大于第二个元素,则进行交换。此过程一直持续到最后一个未排序的元素。在这里,该函数使用inout参数修改原始数组。最后显示排序后的数组。
import Foundation import Glibc // Function to sort array using bubble sort func myBubbleSort(_ array: inout [Int]) { let size = array.count for x in 0..<size { for y in 0..<size-x-1 { // Compare two adjacent elements if array[y] > array[y+1] { // Swap the elements if they are // not in the correct order let temp = array[y] array[y] = array[y+1] array[y+1] = temp } } } } // Array of integer type var arr = [10, 87, 2, 90, 34, 1, 6, 78] myBubbleSort(&arr) print("Sorted array: \(arr)")
输出
Sorted array: [1, 2, 6, 10, 34, 78, 87, 90]
结论
这就是我们如何实现冒泡排序算法。它只适用于小型数据集。平均和最坏情况下的时间复杂度为O(n2),其中n是项目的数量。
广告