Swift 程序求无序数组的中位数
本教程将讨论如何编写 Swift 程序求无序数组的中位数。
数组是有序集合,用于存储相同类型的数据。例如,如果任何数组是整数类型,则它只能存储整数,严格禁止存储其他数据类型的元素,例如字符串、浮点数等。
语法
以下是数组的语法 -
var array1 = [val1, val2, val3, …] 或 var array2 = [Type]()
中位数表示给定排序数字集合的中间值。我们可以通过按升序排列数字来计算中间值。将数字按升序排列后,中间的数字称为给定数组的中位数。
如果数组元素为奇数,则中间元素为中位数。例如:-
2, 5, 8, 90, 34 中位数 - 8
如果数组元素为偶数,则中间两个元素的平均值为中位数。例如:-
2, 5, 8, 90 Median = (5+8)/2 = 6.5
以下是相同的演示:-
输入 1
假设给定的输入为:-
MyArray = [10, 23, 45, 67, 98]
输出
期望输出为 -
Median = 45 输入 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) }
输出
原始数组:[2, 45, 12, 49, 50] 排序后数组:[2, 12, 45, 49, 50] 中位数: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) // 条件为真表示元素总数为奇数{
// 因此中间元素是中位数
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)
输出
原始数组:[40, 20, 60, 80, 30, 70] 排序后的数组:[20, 30, 40, 60, 70, 80] 中位数:50
在上面的代码中,我们有一个名为 arrVals 的整数类型数组。现在为了找到 arrVals 的中位数,我们创建了一个名为 arrayMedian() 的函数。该函数将返回中位数。在这个函数中,我们首先对数组进行排序。然后检查奇数或偶数情况。如果元素为奇数,则中位数是数组的中间值。否则,中位数是两个中间元素的平均值。因此,上述代码的工作原理是 -
Sorted Array: [20, 30, 40, 60, 70, 80]
Size: 6
if (size % 2 != 0)= (6%2 != 0) // 条件为假表示元素总数为偶数{
// 因此两个数的平均值就是中位数
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。