Translate

quarta-feira, 4 de dezembro de 2013

Programa quicksort c++ que gera o vetor aleatório ou definido e imprime completo com o main/separa/quicksort



QUICKSORT


#include <stdio.h>
#include <stdlib.h>

int separa( int v[], int p, int r)
{
   int c = v[p], i = p+1, j = r, t;
   while (/*A*/ i <= j) {
      if (v[i] <= c) ++i;
      else if (c < v[j]) --j;
      else {
         t = v[i], v[i] = v[j], v[j] = t;
         ++i; --j;
      }
   }
   // agora i == j+1                
   v[p] = v[j], v[j] = c;
   return j;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int separa( int v[], int p, int r);
void quicksort( int v[], int p, int r)
{
   int j;                         // 1
   if (p < r) {                   // 2
      j = separa( v, p, r);       // 3
      quicksort( v, p, j-1);      // 4
      quicksort( v, j+1, r);      // 5
   }
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <time.h>
#define MAX 10
using namespace std;
int separa( int v[], int p, int r);
void quicksort( int v[], int p, int r);

int main(){
            int opcao;
            int vetor[MAX];
            do{
                        cout<<"\n\n\n---------------Menu de opções----------------\n";
                        cout<<"1 - Gerar vetor de numeros aleatórios\n";
                        cout<<"2 - Gerar vetor de valores definidos\n";
                        cout<<"3 - Imprimir\n";
                        cout<<"4 - Encerrar o programa\n";
                        cout<<"---------------------------------------------\n\n";
                        cout<<"Informe uma opção";
                        cin>>opcao;
                       
                        switch(opcao){
                                   case 1:
                                               int e;
                                               int ate;
                                               cout<<"Informe o final do intervalo do vetor\n";
                                               cout<<"De: 0 até : ";
                                               cin>>ate;
                                       /* inicializar o gerador de números aleatórios */
                                       srand(time(NULL));
                                       for (e=0; e<MAX; e++)
                                    {
                                /* para gerar números aleatórios de 0 a ate */
                                vetor[e] = rand() % ate;
                                    }
                                               break;
                                              
                                   case 2:
                                              
                                               for(int j = 0; j < MAX; j++)
                                                {
                                                 printf("Digite um valor: ");
                                                 scanf("%d", &vetor[j]);
                                                }
                                               break;
                                                          
                                   case 3:
                                               int i;  
                                               printf("Vetor desordenado:\n");
                                               for(i = 0; i < MAX; i++){
                                                 printf("%d ", vetor[i]);
                                               }
                                               printf("\n");  
                                              
                                               quicksort(vetor, 0, 9);
                                              
                                               printf("Vetor ordenado:\n");
                                               for(i = 0; i < MAX; i++){
                                                 printf("%d ", vetor[i]);
                                               }
                                               printf("\n");
                                               break;
                        }
           
            }while(opcao != 4);
           
            cout << "\n\n\n\ Programa encerrado!";

}

Nenhum comentário:

Postar um comentário