Ordenação interna por inserção
A primeira coisa a entender para melhorar um algoritmo é como os dados de entrada estão organizados: A pesquisa de um livro em uma biblioteca. Se os livros estão organizados, será bem mais fácil encontrar este livro do que em uma biblioteca sem ordem. Da mesma forma, devemos ter a capacidade de trabalhar com conjuntos (estruturas) de dados de tal forma a minimizar o processamento de nossos algoritmos.
Conhecemos já um tipo de estrutura de dados conhecido como vetor. Um vetor é um conjunto de dados do mesmo tipo, sob um mesmo nome e acionados por um índice. Quando declaramos um vetor, estamos declarando um conjunto de espaços consecutivos na memória sob um mesmo nome, e vamos nos movendo nestes espaços utilizando um índice. Aprenderemos nesta lição algumas técnicas de ordenação que nos permitirá organizarmos vetores e matrizes, de modo a reduzir posteriormente o tempo de processamento para busca, inserção e remoção de elementos.
Ordenação
Ordenar ou classificação é colocar os elementos de um conjunto de informações em uma ordem predefinida que seja útil ao processamento de um algoritmo. Por exemplo, se queremos organizar nomes por ordem alfabética, ou classificar números em pares ou ímpares em ordem decrescente, etc, estamos ordenando os elementos desejados. Quando implementamos um algoritmo de ordenação, temos diversos modelos ao nosso dispôr, que atendem necessidades específicas.
O príncipio para reconhecer qual método de ordenação deve ser utilizado em um determinado caso, é saber sobre quais tipos de dados estaremos operando, e qual a sua complexidade computacional, isto é, qual o algoritmo que possui melhor, médio e pior desempenho trabalhando sobre estes dados.
Métodos de Ordenação
Quando trabalhamos com listas, existem ocasiões em que necessitamos ordena-las para facilitar as pesquisas. Podemos ordenar os valores de uma matriz (ou banco de dados) do mais baixo para o mais alto (ordem crescente) ou ainda mais