O algoritmo InsertionSort é um algoritmo simples de ordenação, que pode ser utilizado para ordenar uma quantidade pequena de números.
Este algoritmo é conhecido por sua simplicidade e facilidade de implementação. A ordenação é feita de uma forma similar ao que as pessoas utilizam para ordenar cartas de um baralho. Normalmente se mantêm as cartas em uma mão e durante o jogo, conforme vão recebendo as cartas, colocam as cartas recebidas na mão de uma forma ordenada.
A classe
InsertionSort
foi implementada em Java com dois métodos, o método sortAsc(int[] values)
que faz a ordenação de uma matriz de números inteiros em ordem crescente e o método sortDesc(int[] values)
que faz a ordenação em ordem decrescente./** * Faz a ordenação de uma matriz de números inteiros. */ public class InsertionSort { /* * Faz a ordenação de forma crescente */ public int[] sortAsc(int[] values){ int key = 0; int i = 0; for (int j = 1; j < values.length; j++) { key = values[j]; i = j - 1; while (i >= 0 && values[i] > key) { values[i + 1] = values[i]; i = i - 1; } values[i + 1] = key; } return values; } /* * Faz a ordenação de forma decrescente */ public int[] sortDesc(int[] values){ int key = 0; int i = 0; for (int j = 1; j < values.length; j++) { key = values[j]; i = j - 1; while (i >= 0 && values[i] < key) { values[i + 1] = values[i]; i = i - 1; } values[i + 1] = key; } return values; } }
O algoritmo ordena os números de entrada da matriz na própria matriz, fazendo uma reorganização dos números.