Como implementar a classificação por inserção em C com exemplo

Como Implementar A Classificacao Por Insercao Em C Com Exemplo



O algoritmo de classificação conhecido como “Insertion Sort” é direto e eficaz para pequenos conjuntos de dados. É um método baseado em comparação que organiza os elementos percorrendo um array, avaliando cada elemento em relação aos anteriores e trocando-os, se necessário. Neste post, veremos um exemplo de como implementar a ordenação por inserção na linguagem C.

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} :

#include

vazio 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.