Kotlin 與 Swift 語法對照:跨平台開發者 (2025年)

Kotlin 與 Swift 語法對照表(2025 年版) 在行動應用開發中, Kotlin 與 Swift 分別是 Android 與 iOS 的主流語言。雖然語法有些差異,但其實它們有很多相似之處。本文整理了常用的語法對照表,方便跨平台開發者快速上手。 1. 變數宣告 // Kotlin val name: String = "Alice" // 常數 var age: Int = 25 // 可變數 // Swift let name: String = "Alice" // 常數 var age: Int = 25 // 可變數 2. 條件判斷 // Kotlin if (age >= 18) { println("Adult") } else { println("Minor") } // Swift if age >= 18 { print("Adult") } else { print("Minor") } 3. 函式定義 // Kotlin fun greet(name: String): String { return "Hello, $name!" } // Swift func greet(_ name: String) -> String { return "Hello, \(name)!" } 4. 陣列與迴圈 // Kotlin val fruits = listOf("Apple", "Banana", "Cherry") for (fruit in fruits) { println(fruit) } // Swift let fruits = ["Apple", "Banana", "Cherry"] for fruit in fruits { print(f...

[Algorithm] Bubble Sort 的 Average case 交換次數探討

在探討每個演算法的過程,都會研究它的最好, 最差與平均情況(根據所花的時間),前2者比較好模擬(因為找邊界或極端通常容易舉例),平均情況則需要某些方法去證明。

以Bubble Sort為例,我們希望數列排序為由小到大的模樣。
運作此演算法的過程,每個元素的每一步須跟後面的比較,如果後面的比較小,則倆倆交換,我們用交換次數作為探討的標準,交換次數越多,相對而言就是效果越差。


Best Case

最好的情況即是元素初始已經是由小排到大,因此交換次數為0次


Worst Case

最差的情況在於元素初始是由大排到小。首先由最大的開始,假設數列總共有n個元素,此數先跟隔壁次大的比較而需要交換,一直比較到結束總共會進行`(n-1)`次。輪到第二個數,會進行(n-2)次,依此類推,倒數第2個數會進行1次(跟最後一個最小的比較)。

`總交換次數 = 1 + 2 + 3 + ... + (n - 1) = [(n - 1) +1] * (n - 1) / 2 = n ( n - 1) / 2` 次


Average Case

究竟平均情況該如何舉例與證明呢?

我們先想像一下,剛剛交換都是發生在兩個數字之間

我們定義數列(a1, a2, ... ,an)中,任意兩個數字(ai, aj)組成一個pair,如果ai > aj ,例如 (3, 1), 稱作inverse pair

我們可以假設每個inverse pair會產生一個交換(pair的兩數不相鄰也不影響,因為遲早會對到),因此計算交換次數相當於得到inverse pair的數量即可

假設原本的數列為S,令R(S)為S的反序數列
例如S = (1, 2, 3, 4), R(S) = (4, 3, 2, 1)

可以知道S的每一個pair都可以在R(S)找到對應的反序pair
例如上例S的(2, 3)可以對應R(S)的(3, 2)

其中必定有一個為inverse pair

因此,我們可以知道,對於有n個數的數列S

它的pair總數為Cn取2(任兩數形成一個pair) = n(n-1)/2

inverse pair出現在S或R(S)的機率各半

則總交換次數 = S的總inverse pair數 = [n(n-1)/2] / 2 = n(n-1)/4 









留言

這個網誌中的熱門文章

【Ubuntu】Terminal 複製貼上的方法 Copy & Paste

【Ubuntu】關閉預設畫面自動鎖定

[Java] HashMap資料結構簡介與用法