Enviado em 05/11/2020 - 17:45h
Boa noite a todos,int particao(int *v, int ini, int fim, int *r) {
int aux;
int pivo = v[ini];
int i = ini + 1;
int j = fim;
static int troca = 0, comp = 0;
//retorno = malloc(2 * sizeof(int));
while (i <= j)
{
comp++;
while ((i <= j) && v[i] <= pivo) {
i++;
comp++;
}
while(v[j] > pivo) {
j--;
comp++;
}
if (i < j)
{
aux = v[i];
v[i] = v[j];
v[j] = aux;
troca++;
}
}
aux = v[ini];
v[ini] = v[j];
v[j] = aux;
//troca++;
// *c = comp;
// *t = troca;
r[0] = troca;
r[1] = comp;
return j;
}
/* Auxiliar para a ordenação por QUICK SORT */
int * quick_sortR(int *v, int ini, int fim) {
int j;
static int *retorno, *r;
static int troca = 0;
static int comp = 0;
retorno = malloc(2 * sizeof(int));
// r = malloc(2 * sizeof(int));
if (ini < fim)
{
comp++;
j = particao(v, ini, fim, r);
if(ini < (j -1)) {
quick_sortR(v, ini, fim);
troca++;
}
if((j+1) < fim) {
quick_sortR(v, j + 1, fim);
troca++;
}
}
retorno[0] = r[0];
retorno[1] = r[1];
// free(r);
return retorno;
}
/* Ordenação por QUICK SORT */
void quick_sort(int *v, int tam, int tipo_v) {
int *r;
// FILE *arq;
r = quick_sortR(v, 0, tam -1);
//quick_sortR(v, 0, tam -1);
printf("\nTrocas: %d Comparações: %d\n", r[0], r[1]);
}
void gera_vetor(int *v, int n, int tipo) {
int i = 0;
if (tipo == 1)
{
srand(time(NULL));
for (i = 0; i < v10; i++)
v[i] = rand() % 10;
}
if (tipo == 2)
{
for (i = 0; i < n; i++)
v[i] = i;
}
if(tipo == 3)
for (i = 0; i < n; i++)
v[i] = n - i - 1;
}
#include <stdio.h>
#include <stdlib.h>
int main() {
// int i;
int *vd;
// int *vc;
// int *vm;
// int tam = v10;
vd = malloc(v10 * sizeof(int));
// vc = malloc(v100 * sizeof(int));
// vm = malloc(v1000 * sizeof(int));
printf("\n");
gera_vetor(vd, 10, 1);
for (int i = 0; i < 10; i++)
printf("%d ", vd[i]);
quick_sort(vd, 10, 1);
printf("\n");
for (int i = 0; i < 10; i++)
printf("%d ", vd[i]);
printf("\n");
printf("\n");
free(vd);
// free(vc);
// free(vm);
return 0;
}
Atenção a quem posta conteúdo de dicas, scripts e tal (1)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Problemas para conectar à rede no Linux Mint (10)
Clamav e suas atualizações (15)
Desenvolvimento de um driver (10)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba