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