Objetivo:
Tornar mais simples, rápida e viável a recuperação de uma determinada
informação, num conjunto grande de
informações.
Ordenação por
troca: Ordenação por Troca
1. Bolha (bubble sort)
2. Quicksort
Bolha: Bubble
Sort
Característica do método: algoritmo fácil, pouco eficiente
Idéia básica é percorrer o arquivo sequencialmente várias vezes.
Cada passagem consiste em comparar cada elemento no arquivo e seu sucessor
(x[i] com x[i+1]) e trocar os dois elementos se não estiverem na ordem certa.
#include "stdio.h" #define MAX 10 void bubbleSort(int *vet ); void getVet(int *vet ); void troca(int *a, int *b); void printVet(int *vet); int main () { int vet[MAX] = {25, 3, 9, 1, 90, 34, 19, 13, 44, 33}; printf("Nao Ordenado\n"); printVet(vet); bubbleSort(vet); printf("\nOrdenado\n"); printVet(vet); return 0; } void bubbleSort( int *vet ) { int i, j; for( i = 0; i < MAX; i++ ) { for( j = 1; j < (MAX) - i ; j++ ) { if (vet[j-1] > vet[j]) { troca(&vet[j-1], &vet[j]); } } } } void printVet( int *vet ) { int i; for( i = 0; i < MAX; i++ ) { printf("%d ", vet[i]); } } void troca(int *a, int *b){ int aux; aux = *a; *a = *b; *b = aux; }
Como o método de ordenação BubbleSort é baseado em troca criei um
void chamado troca(int *a, int *b), justamente para demonstrar essa característica desse método de
ordenação
Vamos analisar o void bubbleSort( int *vet ), este método é o mais
simples
A Eficiência
do método da bolha é:
(n - 1) * (n - 1) = n2 - 2n + 1, que é O(n2)
O número de trocas não é maior que o número de comparações, mas
gasta mais tempo na execução.
Para dar continuidade aos posts sobre linguagem C, escolha um dos links abaixo:
0 comentários:
Postar um comentário