A estrutura bubble sort é um algoritmo de ordenação não recursivo que usa a técnica de trocas sucessivas.
A cada passo, compara elementos vizinhos e se eles estiverem desordenados, posiciona (flutua) o maior ou menor elemento para o fim da lista.
Esse processo se repete várias vezes, até que toda a lista esteja ordenada.
✏️ Fácil de entender e implementar
📉 Lento para listas grandes, que exigem várias comparações
📒 Usado mais para ensino do que em sistemas reais
function bubbleSort(array, length){
let i, fim, aux;
for (fim = length - 1; fim > 0; fim--){
for (i = 0; i < fim; i++) {
if(array[i] > array[i + 1]){
aux = array[i];
array[i] = array[i + 1];
array[i + 1] = aux;
}
}
}
}
A estrutura insertion sort é um algoritmo de ordenação não recursivo que lembra a organização de um baralho de cartas.
Ele começa assumindo que o primeiro elemento já está ordenado. Então, sempre compara o próximo elemento com os seus antecessores.
Após as comparações terminarem, insere o elemento atual na posição correta. Os elementos desorganizados são "empurrados" para o fim da lista.
Dessa forma, o insertion sort constrói uma lista ordenada à esquerda, um item por vez.
✏️ Fácil de entender e implementar
📏 Eficiente para listas pequenas ou quase ordenadas
📉 Lento para listas grandes
function insertionSort(array, length){
let i = 0;
let j = 1;
let aux = 0;
while(j < length){
aux = array[j];
i = j - 1;
while((i >= 0) && (array[i] > aux)){
array[i + 1] = array[i];
i = i - 1;
}
array[i + 1] = aux;
j = j + 1;
}
}
A estrutura selection sort é um algoritmo de ordenação não recursivo que procura os valores extremos da lista e os posiciona corretamente.
Primeiro, ele procura o menor ou maior valor da lista e o coloca na primeira posição.
Depois, procura o menor ou maior que sobrou e coloca na segunda posição. E assim, sucessivamente, até ordenar toda a lista.
✏️ Simples de entender
🧮 Sempre faz o mesmo número de comparações
📉 Não é rápido para listas grandes
function selectionSort(array, length){
let i = 0;
let j = 0;
let aux = 0;
let min = 0;
for(i = 0; i < (array.lenght - 1); i++){
min = i;
for(j = (i + 1); j < array.lenght; j++){
if(array[j] < array[min]){
min = j;
}
if(array[i] != array[min]){
aux = array[i];
array[i] = array[min];
array[min] = aux;
}
}
}
}