Bubble sort (burbuja)
Complejidad: O(n^2)
Pseudocódigo
inicio-sub-programa bubbleSort(arr: int[])
n: int = long(arr)
para i: int = 0 hasta n-1
para j: int = 0 hasta n-i-1
si arr[j] > arr[j+1]
temp : int = arr[j+1]
arr[j+1] = arr[j]
arr[j] = temp
fin-si
fin-para
fin-para
fin-sub-programa
INICIO
lista: int[] = [9, 8, 7, 5, 4, 3, 0]
escribir(lista) // escribir(lista) no imprime la lista, se tiene que hacer con Para
bubbleSort(lista)
escribir(lista)
FIN
Insertion sort (inserción)
Complejidad: O(n^2)
Pseudocódigo
inicio-sub-programa insertionSort(arr: int[])
n: int = long(arr)
si n ≤ 1 entonces:
retornar
fin-si
para i:int = 0 hasta n hacer:
key:int = arr[i]
j:int = i-1
mientras j ≥ 0 y key < arr[j] hacer:
arr[j+1] = arr[j]
j = j-1
fin-mientras
arr[j+1] = key
fin-para
fin-sub-programa
INICO
arr: int[] = [12, 11, 13, 5, 6]
escribir(arr)
insertionSort(arr)
escribir(arr)
FIN
Selection sort (selección)
Complejidad: O(n^2)
Pseudocódigo
inicio-sub-programa selectionSort(arr: int[])
size: int = long(arr)
para i:int = 0 hasta size hacer:
minIndex:int = i
para j:int = i + 1 hasta size hacer:
si arr[j] < arr[minIndex] entonces:
minIndex = j
fin-si
fin-para
temp:int = arr[i]
arr[i] = arr[minIndex]
arr[minIndex] = temp
fin-para
fin-sub-programa
INICIO
arr:int[] = [-2, 0, 11, 9,-97]
escribir(arr)
selectionSort(arr)
escribir(arr)
FIN
Merge sort (combinación)
Complejidad: O(n log n)
Pseudocódigo
inicio-sub-programa merge(left: int[], right: int[])
result: int[] = []
i: int = 0
j: int = 0
mientras i < long(left) y j < long(right) hacer:
si left[i] <= right[j] entonces:
result.append(left[i])
i = i + 1
sino:
result.append(right[j])
j = j + 1
fin-si
fin-mientras
mientras i < long(left) hacer:
result.append(left[i])
i = i + 1
fin-mientras
mientras j < long(right) hacer:
result.append(right[j])
j = j + 1
fin-mientras
retornar result
fin-sub-programa
inicio-sub-programa mergesort(arr: int[])
si long(arr) < 2 entonces:
retornar arr[:] // retornar copia de la lista
sino:
middle: int = long(arr) // 2
left: int[] = mergesort(arr[:middle])
right: int[] = mergesort(arr[middle:])
together: int[] = merge(left, right)
retornar together
fin-si
fin-sub-programa
INICIO
numbers: int[] = [2, 0, -9, 1, 7]
escribir(numbers)
ordered: int[] = mergesort(numbers)
escribir(ordered)
FIN
Quick sort (rápida)
Complejidad: O(n log n)
Pseudocódigo
inicio-sub-programa partition(arr: int[], low: int, high: int)
pivot: int = arr[(low + high) // 2]
i: int = low - 1
j: int = high + 1
mientras verdadero hacer:
i = i + 1
mientras arr[i] < pivot hacer:
i = i + 1
fin-mientras
j = j - 1
mientras arr[j] > pivot hacer:
j = j - 1
fin-mientras
si i >= j entonces:
retornar j
fin-si
temp: int = arr[i]
arr[i] = arr[j]
arr[j] = temp
fin-mientras
fin-sub-programa
inicio-sub-programa _quickSort(arr: int[], low: int, high: int)
si low < high entonces:
splitIndex: int = partition(arr, low, high)
_quickSort(arr, low, splitIndex)
_quickSort(arr, splitIndex + 1, high)
fin-si
fin-sub-programa
inicio-sub-programa quickSort(arr: int[])
_quickSort(arr, 0, long(arr) - 1)
fin-sub-programa
INICIO
alist: int[] = [54, 2, 9, -17, 7]
escribir(alist)
quickSort(alist)
escribir(alist)
FIN