Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include<stdio.h> #include<stdlib.h> #include<string.h> //Bolha para inteiros static int compInt(int a,int b) { return a > b; } void bolhaInt(int* v, int n) { int i,j,haTroca; int temp; for (i=n-1;i>0;i--) { haTroca= 0; for (j=0;j<i;j++) { if (compInt(v[j],v[j+1])) { temp = v[j]; v[j] = v[j+1]; v[j+1] = temp; haTroca= 1; } } if (haTroca==0) return; } } //Bolha para strings static int compStr(char * a,char * b) { return (strcmp(a,b) > 0); } void bolhaStr(char ** v, int n) 1 { int i,j,haTroca; char *temp; for (i=n;i>0;i-) { haTroca=0; for (j=0;j<i;j++) { if (compStr(v[j],v[j+1])) { temp = v[j];v[j] = v[j+1];v[j+1] = temp; haTroca=1; } } if (haTroca==0) return; } } //Quick sort para inteiros static int cmpInt(int a,int b) { return a < b; } void quicksort(int n,int * v) { int x = v[0]; int temp; int a = 1; int b = n-1; if (n<=1) return; do { while(a < n && !cmpInt(v[a],x) ) a++; while( cmpInt(v[b],x) ) b--; if(a < b) { 2 temp = v[a]; v[a] = v[b]; v[b] = temp; a++; b--; } } while(a <= b); v[0] = v[b]; v[b] = x; quicksort(b,v); quicksort(n-a,&v[a]); } //Busca binaria para inteiros static int compInt(int c,int b) { if (c < b) return-1; else if (c > b) return 1; else return 0; } int buscaInt(int n,int * v,int c) { int ini=0; int fim=n-1; int meio, cmp; while (ini <= fim) { meio=(ini+fim)/2; cmp = compInt(c,v[meio]); if (cmp <0) fim=meio-1; else if (cmp >0) ini=meio+1; else return meio; } 3 return-1; } //Busca binaria em strutura struct pessoa { char * nome; int idade; }; typedef struct pessoa Pessoa; static int compPessoa(char * a, Pessoa * b) { return strcmp(a,b->nome); } int buscaPes(int n, Pessoa ** v, char * nome) { int ini=0; int fim=n-1; int meio, cmp; while (ini <= fim) { meio=(ini+fim)/2; cmp=compPessoa(nome,v[meio]); if (cmp<0) fim=meio-1; else if (cmp>0) ini=meio+1; else return meio; } return-1; } 4