Swift程序:查找未排序数组的中位数


本教程将讨论如何编写Swift程序来查找未排序数组的中位数。

数组是一个有序的集合,用于存储相同类型的数据。例如,如果一个数组是整数类型,那么它将只存储整数,严格不允许存储其他数据类型的元素,例如字符串、浮点数等。

语法

以下是数组的语法:

var array1 = [val1, val2, val3, …]
Or
var array2 = [Type]()

中位数表示给定一组已排序数字的中间值。我们可以通过将数字按升序排列来计算中间值。一旦数字按升序排列,则中间数字即为给定数组的中位数。

如果数组元素个数为奇数,则中间元素即为中位数。例如:

2, 5, 8, 90, 34
Median - 8

如果数组元素个数为偶数,则两个中间元素的平均值即为中位数。例如:

2, 5, 8, 90
Median = (5+8)/2 = 6.5

以下是演示:

输入1

假设我们的输入是:

MyArray = [10, 23, 45, 67, 98]

输出

期望输出为:

Median = 45
Input 2

输入2

假设我们的输入是:

MyArray = [10, 23, 45, 67]

输出

期望输出为:

Median = 34

算法

以下是算法:

  • 步骤1 - 创建一个包含值的数组。

  • 步骤2 - 使用sort()函数对数组进行排序。

  • 步骤3 - 使用count属性查找数组大小。

  • 步骤4 - 为了找到中位数,我们通过查找余数来检查数组大小是奇数还是偶数。如果余数为0,则数组大小为偶数;否则为奇数。

if (size % 2 != 0)
  • 步骤5 - 如果数组大小为奇数,则中间元素即为中位数。

  • 步骤6 - 如果数组大小为偶数,则中位数为两个中间元素的平均值。

  • 步骤7 - 打印输出

示例1

以下程序演示如何计算未排序数组的中位数。

import Foundation import Glibc // Creating an array of integer type var arrNums = [2, 45, 12, 49, 50] print("Original Array:", arrNums) // Sort the array arrNums.sort() print("Sorted Array:", arrNums) var size = arrNums.count // Finding median // Check for the odd or even case if (size % 2 != 0){ print("Median:", arrNums[size/2]) } else{ print("Median:", (arrNums[(size - 1) / 2] + arrNums[size / 2])/2) }

输出

Original Array: [2, 45, 12, 49, 50]
Sorted Array: [2, 12, 45, 49, 50]
Median: 45

在上面的代码中,我们有一个名为arrNums的整数类型数组。现在我们找到中位数。为此,我们首先对数组进行排序。然后我们检查奇数或偶数的情况。如果元素个数为奇数,则中位数是数组的中间值。否则,中位数是两个中间元素的平均值:

if (size % 2 != 0){
   print("Median:", arrNums[size/2])
}
else{
   print("Median:", (arrNums[(size - 1) / 2] + arrNums[size / 2])/2)
}

所以上面代码的工作原理:

排序后的数组:[2, 12, 45, 49, 50]

数组大小:5

if (size % 2 != 0)= (5%2 != 0) // Condition is true means total number of elements are odd{
   // So the mid element is the median
   print("Median:", arrNums[size/2]) = print(arrNums[size/2]) = print(arrNums[5/2]) = print(arrNums[2]) = print(45)
}

因此中位数为45。

示例2

以下程序演示如何计算未排序数组的中位数。

import Foundation import Glibc // Function to find the median of the given array func arrayMedian(arr: [Int]){ var arrNums = arr // Sort the array arrNums.sort() print("Sorted Array:", arrNums) let size = arrNums.count // Finding median // Check for the odd or even case if (size % 2 != 0){ print("Median:", arrNums[size/2]) } else{ print("Median:", (arrNums[(size - 1) / 2] + arrNums[size / 2])/2) } } // Creating an array of integer type var arrVals = [40, 20, 60, 80, 30, 70] print("Original Array:", arrVals) // Calling the Function arrayMedian(arr: arrVals)

输出

Original Array: [40, 20, 60, 80, 30, 70]
Sorted Array: [20, 30, 40, 60, 70, 80]
Median: 50

在上面的代码中,我们有一个名为arrVals的整数类型数组。现在要找到arrVals的中位数,所以我们创建一个名为arrayMedian()的函数。此函数将返回中位数。在此函数中,我们首先对数组进行排序。然后我们检查奇数或偶数的情况。如果元素个数为奇数,则中位数是数组的中间值。否则,中位数是两个中间元素的平均值。所以上面代码的工作原理:

Sorted Array: [20, 30, 40, 60, 70, 80]
Size: 6
if (size % 2 != 0)= (6%2 != 0) // Condition is false means total number of elements are even{
   // So the average of two numbers is the median
   print((arrNums[(size - 1) / 2] + arrNums[size / 2])/2) = print((arrNums[(6 - 1) / 2] + arrNums[6 / 2])/2) = print((arrNums[5/ 2] + arrNums[6 / 2])/2) = print((arrNums[2] + arrNums[3])/2) = print((40 + 60)/2) = print(100/2) = print(50)
}

因此中位数为50。

更新于:2022年10月20日

934 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告