DAS5102 - Ordenação Bolha - Exemplo em C

De Aulas

Links relacionados: DAS5102 Fundamentos da Estrutura da Informação

bolha.h

 1#ifndef BOLHA_H_INCLUDED
 2#define BOLHA_H_INCLUDED
 3
 4typedef struct vetor Vetor;
 5
 6Vetor* vetor_cria(int tamanho);
 7void vetor_mostrar(Vetor* v);
 8void vetor_ordenar_bolha(Vetor* v);
 9
10#endif // BOLHA_H_INCLUDED

bolha.c

 1#include "bolha.h"
 2#include <stdlib.h>
 3#include <stdio.h>
 4
 5struct vetor
 6{
 7    int tamanho;
 8    int* elemento;
 9};
10
11Vetor* vetor_cria(int tamanho)
12{
13    Vetor* v = malloc (sizeof(Vetor));
14    v->tamanho = tamanho;
15    v->elemento = malloc (v->tamanho * sizeof(int));
16    int i;
17    for (i = 0; i < v->tamanho; i++)
18    {
19        v->elemento[i] = rand() % 100;
20    }
21    return v;
22}
23
24void vetor_mostrar(Vetor* v)
25{
26    int i;
27    printf("vetor : [ ");
28    for (i = 0; i < v->tamanho; i++)
29    {
30        printf("%d ", v->elemento[i]);
31    }
32    printf("]\n");
33}
34
35void vetor_ordenar_bolha(Vetor* v)
36{
37    int a, b, no;
38    for (a = v->tamanho - 1; a >= 0; a--)
39    {
40        for (b = 0; b < a; b++)
41        {
42            if (v->elemento[b] > v->elemento[b+1])
43            {
44                no = v->elemento[b];
45                v->elemento[b] = v->elemento[b+1];
46                v->elemento[b+1] = no;
47            }
48            vetor_mostrar(v);
49        }
50    }
51}

main.c

 1#include <stdio.h>
 2#include <stdlib.h>
 3#include "bolha.h"
 4
 5int main()
 6{
 7    Vetor* vet = vetor_cria(10);
 8    vetor_mostrar(vet);
 9    vetor_ordenar_bolha(vet);
10    vetor_mostrar(vet);
11    return 0;
12}