JP

Algoritmos de Ordenação

Isso daqui vira sufoco pra uma galera! Principalmente porque os professores costumam não saber como cobrar dos alunos o aprendizado sobre os algoritmos, isso faz com que a galera tenha que decorar, aí a galera não anota o pseudocódigo que o professor provavelmente colocou no quadro, e depois não acha ele atoa na internet. ¯\_(ツ)_/¯

O grande lance é que você provavelmente não vai poder usar bibliotecas, nem funções prontas da linguagem nas avaliações. E os métodos de avaliação costumam ser:

Enfim... seguem alguns sorts!

OPA! E, por favor, lembre que isso aqui é feito por um estudante! Se encontrar um erro, ou conhecer um formato melhor, cria uma issue com o seu conteúdo! :D

Insertion Sort

int iSort(int n, int v[]) { ..int i, j, key; . ..for (i = 1; i < n; i++) { ....key = v[i]; ....for (j = i - 1; j >= 0; j--) { ......if (v[j] > key) { ........v[j + 1] = v[j]; ......} ....} ....v[j + 1] = key; ..} }

Selection Sort

int selSort(int n, int v[]) { ..int i, j, key, aux; . ..for (i = 0; i < n - 1; i++) { ....key = i; ....for (j = i + 1; j < n; j++) { ......if (v[j] < v[key]) { ........key = j; ......} ....} ....aux = v[i]; ....v[i] = v[key]; ....v[key] = aux; ..} }

Bubble Sort

int bSort(int n, int v[]) { ..int i, j, aux; . ..for (i = 0; i < n; i++) { ....for (j = 0; j < n - 1; j++) { ......if (v[j] > v[j + 1]) { ........aux = v[j]; ........v[j] = v[j + 1]; ........v[j + 1] = aux; ......} ....} ..} }

Quick Sort

int quickSort(int v[], int left, int right) { ..int i, j; ..int pivot, aux; . ..pivot = v[(left + right)/2]; ..i = left; ..j = right; ..while (i <= j) { ....while (pivot < v[i]) i++; ....while (v[j] < pivot) j--; ....if (i <= j) { ......aux = v[i]; ......v[i] = v[j]; ......v[j] = aux; ......i++; ......j--; ....} ..} ..if (left < j) quickSort(v, left, j); ..if (i < right) quickSort(v, i, right); }