Algoritmos e Estruturas de Dados em Swift: Curso Completo para Iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução a Algoritmos e Estruturas de Dados em Swift

Swift é uma linguagem de programação poderosa e intuitiva, criada pela Apple para o desenvolvimento de aplicativos para iOS, macOS, watchOS e tvOS. No entanto, para escrever código eficiente e rápido, não basta apenas conhecer a sintaxe. Compreender algoritmos e estruturas de dados é a base que transforma um iniciante em um desenvolvedor profissional.

Neste artigo, abordaremos as estruturas de dados básicas (arrays, dicionários, conjuntos) e os principais algoritmos (ordenação, busca) em Swift. Todos os exemplos de código estão prontos para execução no Xcode Playground.



Principais Estruturas de Dados em Swift

O Swift fornece estruturas de dados integradas que são otimizadas para gerenciamento de memória e desempenho. Vamos analisar as três mais importantes.



Arrays (Array)

Um array é uma coleção ordenada de elementos do mesmo tipo. Em Swift, os arrays são fortemente tipados e possuem uma ordem fixa.

// Criando um arrayvar numbers: [Int] = [1, 2, 3, 4, 5]

// Adicionando um elementonumbers.append(6)

// Acesso por índicelet first = numbers[0] // 1

// Iteraçãofor number in numbers { print(number)}

// Ordenação in-placenumbers.sort() // [1, 2, 3, 4, 5, 6]

Arrays são ideais quando a ordem dos elementos é importante e é necessário acesso rápido por índice (O(1)). No entanto, inserir ou remover no início do array requer tempo O(n).



Dicionários (Dictionary)

Um dicionário armazena pares "chave-valor". As chaves devem ser únicas e hasháveis (por exemplo, String, Int).

// Criando um dicionáriovar scores: [String: Int] = ["Alice": 95, "Bob": 87]

// Adicionando ou atualizandoscores["Charlie"] = 92

// Obtendo um valor (opcional)if let aliceScore = scores["Alice"] { print("Pontuação da Alice: \\(aliceScore)")}

// Removendoscores.removeValue(forKey: "Bob")

Dicionários fornecem acesso a um valor por chave em O(1) em média. Use-os quando os dados são naturalmente agrupados por chaves únicas.



Conjuntos (Set)

Um conjunto é uma coleção não ordenada de elementos únicos. É útil para verificar pertinência e remover duplicatas.

// Criando um conjuntovar fruits: Set<String> = ["Apple", "Banana", "Orange"]

// Adicionandofruits.insert("Mango")

// Verificando existênciaif fruits.contains("Apple") { print("Apple está no conjunto")}

// Removendo duplicatas de um arraylet arrayWithDuplicates = [1, 1, 2, 3, 3, 4]let uniqueSet = Set(arrayWithDuplicates) // {1, 2, 3, 4}


Algoritmos Básicos em Swift

Agora vamos aplicar as estruturas de dados para resolver problemas típicos. Vamos abordar ordenação e busca.



Algoritmos de Ordenação

Swift possui uma função embutida sort(), mas para entendimento, vamos escrever o algoritmo clássico de Quick Sort (Ordenação Rápida).

func quickSort(_ array: [Int]) -> [Int] {    guard array.count > 1 else { return array }        let pivot = array[array.count / 2]    let less = array.filter { $0 < pivot }    let equal = array.filter { $0 == pivot }    let greater = array.filter { $0 > pivot }        return quickSort(less) + equal + quickSort(greater)}

let unsorted = [3, 6, 1, 8, 2, 9, 4]let sorted = quickSort(unsorted)print(sorted) // [1, 2, 3, 4, 6, 8, 9]

O Quick Sort é um dos algoritmos mais eficientes, com complexidade média O(n log n). Para arrays pequenos, pode-se usar o embutido sorted().



Algoritmos de Busca

A Busca Linear é simples, mas lenta (O(n)). Para dados ordenados, use a Busca Binária (O(log n)).

// Busca Bináriafunc binarySearch(_ array: [Int], target: Int) -> Int? {    var low = 0    var high = array.count - 1        while low <= high {        let mid = (low + high)                

Blogs

Book Recommendations