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。