Busca e ordenação de números

Publicado por Luciano Alexandre de Farias Silva (última atualização em 10/04/2013)

[ Hits: 7.291 ]

Homepage: http://www.tecsource.blogspot.com.br/

Download BuscaOrdNum.cpp




Um pequeno algoritmo em C++ com duas funções: Uma para ordenar um Vetor de números e outra, para buscar um número qualquer nesse Vetor.

  



Esconder código-fonte

#include<iostream>
using namespace std;
float busca(float num, float n, float x[100]) ;
void bubblesort(int n, float x[100]);

int main(void) {

float x[100], num;

int n, i;
bool achou;



do {
   cout << "Quantos números?" <<endl;
   cin >> n;
   
      } while(n <= 0 || n > 100); 

cout << "Digite os números: "<<endl;
for(i = 0; i <= n-1; i++) {
   cin >> x[i];
}

bubblesort(n, x);
cout << "Vetor ordenado: " <<endl;
for(i = 0; i < n ; i++){
      cout << x[i] <<" ";
      }
   
   cout << "\nDigite o número que procura: "<<endl;
   cin >> num;
   
   achou = busca(num, n , x);
   
  if(achou){
     cout << "Número encontrado.";
  }else{
     cout << "Número não encontrado";
  }
  
 return 0; 
 }

float busca(float num, float n, float x[100] ) {
   int  meio, alto, baixo;
   alto = n - 1;
   baixo = 0;
   bool achou = false;
      
   while( baixo <= alto && (!achou)){
   meio = (baixo + alto)/2;
   if(num < x[meio]){
      alto = meio - 1;

      } else if(num > x[meio]){
         baixo = meio + 1;
         }else {
            achou = true;
   }
  }
   return achou;
}


void bubblesort( int n, float x[100]){
      float aux;
      int j, i;
      
      for(i = 0; i < n-1; i++){
         for(j=i+1; j < n ; j++){
            if(x[i] > x[j]){
               aux = x[i];
               x[i] = x[j];
               x[j] = aux;
            }
         }
   }

}

Scripts recomendados

3025 -> 30 + 25 = 55 -> 55*55 = 3025

Contador de moedas

Retornando caractere digitado

Calcular potência de um número

validaCPF


  

Comentários
[1] Comentário enviado por phoemur em 11/04/2013 - 00:12h

Esse exercício é muito bom pra entender como funciona as funções de ordenação. Existem vários tipos: Bubble Sort, Exchange Sort, Selection Sort, Insertion Sort, Shell Sort, Quick Sort, Merge Sort... enfim...

É sempre bom saber fazer na unha, mas se você quer eficiência nada melhor que usar std::sort e std::search ... funciona muito melhor...

http://www.cplusplus.com/reference/algorithm/sort/
http://www.cplusplus.com/reference/algorithm/search/

[2] Comentário enviado por elgio em 11/04/2013 - 16:57h

Curioso!

Para ordenar usou um dos piores algoritmos, o Bubble Sort (pior em desempenho)
Para buscar usou um dos melhores, a busca binária!

Para poucos elementos o bublle é rápido e a busca binária é lenta.

Para muitos elementos o bubble é LENTO e a busca rápida.

Dezenas de milhares de elementos o bubble se torna praticamente insustentável!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts