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 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告