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。