Swift程序 使用快速排序算法升序排序数组

Swift程序 使用快速排序算法升序排序数组

在Swift中,快速排序算法是一种基于分治法的排序算法。在这种排序中,我们首先通过选择一个枢轴元素将数组分成子数组。在这里,划分是这样进行的,最小的元素放在枢轴元素的左侧,最小的元素放在枢轴元素的右侧。现在,右侧和左侧的子数组也使用相同的方法进行划分。这个过程继续进行,直到所有子数组都只包含一个元素。在这一点上,数组元素已排序,现在我们将它们组合成一个数组以在输出中显示它们。所以现在我们使用快速排序对数组进行升序排序。

算法

  • 步骤1 – 创建一个函数来使用快速排序按升序对数组进行排序。

  • 步骤2 – 在函数内部,首先检查数组的长度。如果它有0或1个元素,则返回数组已排序。

  • 步骤3 – 从给定数组的中间选择枢轴元素。

  • 步骤4 – 过滤小于枢轴的元素

  • 步骤5 – 过滤等于枢轴元素的元素

  • 步骤6 – 过滤大于枢轴元素的元素

  • 步骤7 – 现在递归地对子数组进行排序,并使用+运算符将它们连接成单个数组。

  • 步骤8 – 调用函数并将数组传递给它。

  • 步骤9 – 打印排序后的数组。

示例

在下面的示例中,我们将创建一个名为quickSortAlgo()的函数。此函数将一个数组作为输入,并使用快速排序将给定数组按升序排序。然后我们从数组中选择中间元素作为枢轴元素。然后将数组划分为包含元素的三个子数组:小于枢轴元素,大于枢轴元素和等于枢轴元素。现在我们递归应用快速排序于lessEle和greaterEle,然后使用+运算符连接所有排序子数组,并最终按降序显示排序后的数组。

import Foundation
import Glibc

// 使用快速排序按升序对数组进行排序的函数 
func quickSortAlgo(arr: [Int]) -> [Int] {

   // 如果数组有0或1个元素,则数组已排序
   guard arr.count > 1 else { return arr } 

   // 在中间选择枢轴元素
   let pivotEle = arr[arr.count/2] 

   // 过滤小于枢轴的元素
   let lessEle = arr.filter { 00 == pivotEle } 

   // 过滤大于枢轴元素的元素
   let greaterEle = arr.filter { $0 > pivotEle } 

   // 现在递归地对子数组进行排序,并将它们连接成单个数组
   return quickSortAlgo(arr: lessEle) + equalEle + quickSortAlgo(arr: greaterEle) 
}

let arr = [3, 6, 1, 8, 1, 56, 23, 12, 5]
let resultantArr = quickSortAlgo(arr: arr)
print("排序后的数组:", resultantArr)

输出

排序后的数组: [1, 1, 3, 5, 6, 8, 12, 23, 56]

结论

所以,这就是我们如何使用快速排序按升序对数组进行排序的方法。在这里,我们使用filter(_:)方法实现快速排序,但您也可以使用其他方法。由于其分治的性质,快速排序很容易解决问题,但它的最坏情况时间复杂度是O(n2)。它适用于大数据集,但对于小数据集来说并不是一个好的选择。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Swift 示例