Pular para o conteúdo

Busca e ordenação de números

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.
Luciano Alexandre de Farias Silva LucianoAlexandre
Hits: 8.055 Categoria: C/C++ Subcategoria: Introdução
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.
Download BuscaOrdNum.cpp Enviar nova versão

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;
            }
         }
   }

}

Converter um vetor em uma matriz multidimensional

Parte 3 - Sessão de estudo sobre VETORES

Números pares em intervalo

Função fork

Cálculo do fatorial

#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

Entre na sua conta para comentar.