Neste algoritmo o valor é inserido de tal modo que a tabela continue ordenada. Isso é conseguido em três passos:
O algoritmo é:
Este algoritmo utiliza as seguintes funções auxiliares (supondo que a tabela está ordenada por Classificação: campo CLASS):
Note-se que na função procura_pos a condição:
(list.CARROS[i].CLASS<elem.CLASS)(ilist.TOTAL)deixa o valor da variável i, passar para além do fim da tabela, o que poderia originar uma situação de erro: uma tentativa de aceder a uma posição inexistente da tabela. No entanto, como se trata do fim lógico da tabela e a função só é invocada se houver espaço para mais elementos (ver algoritmo 6.2), nunca acontecerá uma situação em que o valor da variável i seja um índice inválido de list.CARROS.