O que é classificação por inserção em C?
O método de classificação chamado classificação por inserção corresponde a cada elemento com os adjacentes à medida que itera em uma matriz. Um elemento menor que o anterior é inserido no subarray classificado no local apropriado.
Para ilustrar ainda mais, demonstrei um exemplo no qual considerei uma matriz de quatro elementos em uma matriz como arr[]= {5, 4, 60, 9} e queremos classificar esse elemento em ordem crescente usando a classificação por inserção. As interações a seguir explicam a simulação completa da classificação por inserção:
Iteração 1
5 | 4 | 60 | 9 |
Temos uma matriz como arr[5, 4, 60, 9] agora, na primeira iteração da classificação por inserção, primeiro comparamos os dois primeiros elementos, como 5 e 4, como o arr[5] é > arr[4] então nós os trocamos para classificar o array em ordem crescente. Agora, a matriz será:
4 | 5 | 60 | 9 |
Iteração 2
4 | 5 | 60 | 9 |
Na segunda iteração, comparamos os próximos dois elementos, como arr[5] com arr[60].
Como o arr[5] < arr[60], a troca não ocorre, pois já está classificada em ordem crescente. Agora, a matriz se torna:
4 | 5 | 60 | 9 |
Iteração 3
4 | 5 | 60 | 9 |
Como na terceira iteração, combinamos o terceiro e quarto elementos como arr[60] com arr[9].
Agora, vemos que o arr[60] > arr[9] então a troca ocorre, então a matriz será classificada em ordem crescente.
4 | 5 | 9 | 60 |
É assim que a classificação por inserção funciona em C, que classifica um elemento de matriz facilmente em ordem crescente ou decrescente.
Fluxograma de Ordenação por Inserção
Segue o fluxograma do algoritmo de ordenação por inserção:
Exemplo de implementação de classificação por inserção em C
Primeiro exigimos uma coleção de elementos que precisam ser classificados em ordem crescente e decrescente para construir o método de classificação por inserção em C. Suponha, para fins deste exemplo, que estamos lidando com uma matriz de números {5, 4, 60, 9} :
#includevazio insertsort_ascending ( int arr1 [ ] , int n ) {
int eu , j , a minha chave ;
//o loop for é usado para iterar os valores i de 1 a i
para ( eu = 1 ; eu < n ; eu ++ ) {
a minha chave = arr1 [ eu ] ;
j = eu - 1 ;
enquanto ( j >= 0 && arr1 [ j ] > a minha chave ) {
arr1 [ j + 1 ] = arr1 [ j ] ;
j = j - 1 ;
}
arr1 [ j + 1 ] = a minha chave ;
}
}
vazio insertsort_descending ( int arr2 [ ] , int m ) {
int eu , j , a minha chave ;
// outro loop for é criado para iterar os valores i de 1 a i
para ( eu = 1 ; eu < m ; eu ++ ) {
a minha chave = arr2 [ eu ] ;
j = eu - 1 ;
enquanto ( j >= 0 && arr2 [ j ] < a minha chave ) {
arr2 [ j + 1 ] = arr2 [ j ] ;
j = j - 1 ;
}
arr2 [ j + 1 ] = a minha chave ;
}
}
int principal ( ) {
//Insertion-Class com ordem decrescente
int meu_arr [ ] = { 5 , 4 , 60 , 9 } ; //inicializa um my_arr[] com quatro valores
int m = tamanho de ( meu_arr ) / tamanho de ( meu_arr [ 0 ] ) ;
insertsort_descending ( meu_arr , m ) ;
printf ( 'Matriz classificada em ordem decrescente: ' ) ;
para ( int eu = 0 ; eu < m ; eu ++ )
printf ( '%d' , meu_arr [ eu ] ) ;
printf ( ' \n ' ) ;
//Insertion-Class com ordem crescente
int n = tamanho de ( meu_arr ) / tamanho de ( meu_arr [ 0 ] ) ;
insertsort_ascending ( arr2 , n ) ;
printf ( 'Matriz classificada em ordem crescente: ' ) ;
para ( int eu = 0 ; eu < n ; eu ++ )
printf ( '%d' , meu_arr [ eu ] ) ;
printf ( ' \n ' ) ;
retornar 0 ;
}
Neste código, dois métodos insertsort_descending() , e insertsort_ascending() pegue os valores da matriz de meu_arr[] . O código então usa um para loop para percorrer os elementos da matriz.
Chamamos ambas as funções na função principal depois de terem classificado os arrays em ordem crescente e decrescente. Depois disso, os loops for são usados para imprimir a matriz classificada.
Quando executamos este programa, a saída esperada é colocada abaixo:
Conclusão
A classificação por inserção é uma maneira rápida e fácil de classificar uma matriz em sequência crescente ou decrescente. Para pequenos conjuntos de dados, essa técnica de classificação funciona bem. Como você pode ver no guia acima, é simples implementar um exemplo de programa em C para entender facilmente a ordenação por inserção em ordem crescente e decrescente.