使用插入排序法将数组按升序排列的Swift程序


在Swift中,插入排序是一种排序技术,它将给定的数组虚拟地分成两个部分:已排序部分和未排序部分。然后,程序顺序搜索数组,比较未排序部分的两个元素,并将它们移动到已排序部分的正确位置。使用插入排序,我们可以轻松地将数组元素按升序或降序排列。因此,在本文中,我们将学习如何使用插入排序将数组按升序排列。

插入排序的工作原理

给定未排序数组:

要将数组按升序排序,请比较前两个元素 2 和 5。

此处 2 和 5 都是升序的。因此,我们移动到接下来的两个元素 5 和 3。

此处 5 大于 3,因此我们交换 5 和 3 的位置。

现在我们再次比较 2 和 3,此处 2 和 3 都是升序的,因此我们移动到接下来的元素 5 和 4。

此处 5 大于 4,因此我们交换元素的位置。

再次比较元素 3 和 4,此处两个元素都是升序的。因此我们得到最终按升序排序的数组。这就是插入排序的工作原理。

算法

  • 步骤 1 - 创建一个以数组作为参数并返回已排序数组的函数。

  • 步骤 2 - 在函数内部创建一个原始数组的副本。

  • 步骤 3 - 使用 for-in 循环迭代每个数组元素,从索引 1 到 n-1。

  • 步骤 4 - 然后运行 while 循环,并将当前元素与其前驱元素进行比较。

  • 步骤 5 - 如果已排序数组中的元素小于当前元素,则移动到下一个元素。如果不是,则将较大的元素向右移动。

  • 步骤 6 - 将当前值插入到结果数组中。

  • 步骤 7 - 返回已排序数组。

  • 步骤 8 - 创建一个数组,调用该函数并将其传递进去。

  • 步骤 9 - 打印输出。

示例

在下面的 Swift 程序中,我们将使用插入排序将数组按升序排序。为此,我们将创建一个数组,然后将该数组传递给函数。然后,该函数创建一个原始数组的副本。然后,它从索引 1 开始迭代数组的元素,对于每个元素,它将把其值存储在 initialVal 中。然后,它启动一个 while 循环,该循环将每个大于 initialVal 的元素向右移动一个位置。该循环将持续进行,直到 initialVal 中存在的元素大于 initialVal。之后,该函数将 initialVal 插入到已排序数组的正确位置,最后将返回已排序数组。

import Foundation
import Glibc

func sorting(arr:[Int]) -> [Int] {
   var resultantArray = arr
    
   for x in 1..<resultantArray.count{
      let initialVal = resultantArray[x]
      var y = x
        
      // Moving elements that are greater than initialVal
      // one position on the right
      while y > 0 && resultantArray[y-1] > initialVal{
         resultantArray[y] = resultantArray[y-1]
         y -= 1
      }
      resultantArray[y] = initialVal
   }
   return resultantArray
}

var mArr = [3, 1, 9, 4, 2, 10, 5]
var res = sorting(arr:mArr)

print(res)

输出

[1, 2, 3, 4, 5, 9, 10]

结论

这就是我们如何使用插入排序将数组按升序排序。插入排序是最简单的排序算法,但它仅适用于小型数据集。它不适用于大型数据集。插入排序的最坏情况时间复杂度为 O(N2),其余时间复杂度为 O(N)。

更新于:2023年5月10日

浏览量:355

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.