Algorithmen und Datenstrukturen in Swift: Ein praktischer Leitfaden für iOS

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Algorithmen und Datenstrukturen in Swift: In der Praxis



Swift ist eine leistungsstarke und intuitive Programmiersprache, die von Apple für die Entwicklung unter iOS, macOS, watchOS und tvOS entwickelt wurde. Die Kenntnis der Syntax und der Frameworks ist jedoch nur die halbe Miete. Um effiziente, schnelle und skalierbare Anwendungen zu schreiben, müssen Sie verstehen, wie Algorithmen und Datenstrukturen funktionieren. In diesem Artikel werden wir die wichtigsten Konzepte anhand konkreter Codebeispiele in Swift erläutern. Sie erfahren, wie Sie einen Stack, eine Queue, Sortieralgorithmen und die binäre Suche implementieren und wo dieses Wissen in der realen Entwicklung angewendet wird.



Stack in Swift: LIFO in Aktion



Ein Stack ist eine Sammlung, die nach dem Prinzip "Last In, First Out" (LIFO) funktioniert. Stellen Sie sich einen Stapel Teller vor: Sie nehmen nur den obersten. In iOS wird ein Stack beispielsweise für die Navigation (UINavigationController) oder zum Rückgängigmachen von Aktionen (Undo) verwendet.



Wir implementieren einen Stack in Swift mit Generics:



struct Stack<Element> {    private var elements: [Element] = []        mutating func push(_ element: Element) {        elements.append(element)    }        @discardableResult    mutating func pop() -> Element? {        return elements.popLast()    }        func peek() -> Element? {        return elements.last    }        var isEmpty: Bool {        return elements.isEmpty    }        var count: Int {        return elements.count    }}

// Beispiel zur Verwendungvar stack = Stack<String>()stack.push("Erster")stack.push("Zweiter")stack.push("Dritter")

print(stack.pop()!) // Dritterprint(stack.peek()!) // Zweiter


Wo wird es angewendet? In Apps zur Anzeige des Browserverlaufs, in Parsern (Klammerprüfung), in Graphendurchlaufalgorithmen (DFS).



Queue: FIFO zur Aufgabenverarbeitung



Eine Queue funktioniert nach dem Prinzip "First In, First Out" (FIFO). Wie eine Schlange im Geschäft: Wer zuerst kommt, wird zuerst bedient. In Swift wird eine Queue häufig zur Verwaltung von Aufgaben (DispatchQueue), zur Verarbeitung von Netzwerkanfragen oder Animationen verwendet.



Basisimplementierung einer Queue:



struct Queue<Element> {    private var elements: [Element] = []        mutating func enqueue(_ element: Element) {        elements.append(element)    }        @discardableResult    mutating func dequeue() -> Element? {        return isEmpty ? nil : elements.removeFirst()    }        func front() -> Element? {        return elements.first    }        var isEmpty: Bool {        return elements.isEmpty    }        var count: Int {        return elements.count    }}

// Beispiel zur Verwendungvar queue = Queue<Int>()queue.enqueue(1)queue.enqueue(2)queue.enqueue(3)

print(queue.dequeue()!) // 1print(queue.front()!) // 2


Performance-Problem: removeFirst() auf einem Array hat die Komplexität O(n), da alle Elemente verschoben werden. Für hohe Leistung verwenden Sie ContiguousArray oder eine doppelendige Queue (deque). In realen Projekten empfiehlt Apple DispatchQueue für Multithreading.



Sortieralgorithmen: Von Bubble Sort bis Quick Sort



Sortieren ist eine der häufigsten Operationen. In Swift gibt es die eingebaute sort(), aber das Verständnis der internen Mechanismen hilft Ihnen, den optimalen Algorithmus für eine bestimmte Aufgabe auszuwählen.



Bubble Sort — O(n²)

Ein einfacher, aber langsamer Algorithmus. Nützlich zum Lernen, aber nicht für die Produktion.



func bubbleSort(_ array: inout [Int]) {    guard array.count > 1 else { return }        for i in 0..<array.count {        var swapped = false        for j in 0..<(array.count - 1 - i) {            if array[j] > array[j + 1] {                array.swapAt(j, j + 1)                swapped =                

Blogs

Buchempfehlungen