ESTRUTURA DE DADOS
LES
Método de inserção direta
Um dos métodos mais simples de ordenação é a inserção direta.
Inicialmente, são ordenados os 2 primeiros membros do array.
Em seguida, é inserido o 3º membro na sua posição ordenada
com relação aos 2 primeiros. O processo continua até que todos
os elementos estejam ordenados.
São realizados (N-1) passos e no passo “p” os elementos A[1], ..., A[p-1] já estão
ordenados.
Consideraremos que os elementos a serem ordenados estão armazenados nas
posições
e a posição A[0] será utilizada para armazenar um ``sentinela''
(um número inteiro muito pequeno).
No passo “p” o elemento A[p] é comparado com os elementos
Caso A[p] precise ser inserido entre A[j] e A[j+1],
então os elementos A[j+1], ..., A[p-1]são movidos uma posição a
frente e A[p]é inserido na posição correta. A tabela abaixo ilustra
esse processo:
void InsertionSort(int *A, int N)
{
int j,p,temp;
A[0] = MININT
// sentinela - numero inteiro muito pequeno
for (p = 2; p<=N; p++)
{
j = p;
temp = A[p];
while( temp < A[j-1] )
{
A[j] = A[j-1]; // Deslocamento - abre espaço para o elemento a ser inserido
//
j--;
}
A[j] = temp;
// Coloca o elemento na posição correta
}
}
Download

LES - MRM Sistemas