1
+ /*
2
+ Algoritmo de ordenação Insertion Sort em C
3
+ Vinicios Barbosa da Silva - 2023
4
+ https://github.com/ViniciosB
5
+ */
6
+
7
+ #include <stdio.h> // Necessário para usar input e output
8
+ #include <stdlib.h> // Necessário para usar a função rand()
9
+ #include <time.h> // Necessário para inicializar a semente de números aleatórios
10
+
11
+ // Definimos a função insertion_sort que recebe como argumento o vetor a ser ordenado e seu tamanho n
12
+ void insertion_sort (int arr [], int n ) {
13
+ int i , j , key ;
14
+ // Percorremos todos os elementos do vetor a partir do segundo elemento
15
+ for (i = 1 ; i < n ; i ++ ) {
16
+ // Armazenamos o valor do elemento atual em key
17
+ key = arr [i ];
18
+ // Inicializamos o índice j como o elemento anterior ao elemento atual
19
+ j = i - 1 ;
20
+ // Enquanto j é maior ou igual a 0 e o elemento atual é menor do que o elemento na posição j do vetor,
21
+ // movemos o elemento na posição j uma posição para a direita e decrementamos j
22
+ while (j >= 0 && arr [j ] > key ) {
23
+ arr [j + 1 ] = arr [j ];
24
+ j = j - 1 ;
25
+ }
26
+ // Quando o loop interno termina, colocamos o elemento atual em sua posição correta
27
+ arr [j + 1 ] = key ;
28
+ }
29
+ }
30
+
31
+ // Função principal
32
+ int main () {
33
+ int i , n , arr [100 ];
34
+ srand (time (NULL )); // Inicializa a semente de números aleatórios
35
+ printf ("Entre com o numero de elementos no vetor: " );
36
+ scanf ("%d" , & n );
37
+ printf ("Vetor de entrada:\n" );
38
+ for (i = 0 ; i < n ; i ++ ) {
39
+ arr [i ] = rand () % 100 ; // Gera um valor aleatório entre 0 e 99
40
+ printf ("%d " , arr [i ]); // Imprime o valor gerado
41
+ }
42
+ printf ("\n" );
43
+ insertion_sort (arr , n );
44
+ printf ("Vetor ordenado em ordem crescente:\n" );
45
+ for (i = 0 ; i < n ; i ++ ) {
46
+ printf ("%d " , arr [i ]);
47
+ }
48
+ printf ("\n" );
49
+ return 0 ;
50
+ }
0 commit comments