Ir para conteúdo
Fórum Script Brasil
  • 0

Ordenacao Quick Sort


Sartor

Pergunta

ESTOU A FAZER UM METODO DE ORDENAÇAO, POREM ACABEI DE não COMPREEENDER O QUE ACONTECE NO ALGORITMO ABAIXO,

ELE ESTA ORDENANDO CORRETAMENTE, POREM O QUE EU GOSTARIA Q ACONTECECE (QUE É COPIAR O CODIGO - SOMENTE O CODIGO- E ORDENALO CONFORME O CODIGO) SOU INICIANTE E USO O DEV C++. não CONSIGO COMPREENDER O porque, SE alguém DER UMA LUZ AEW FICO MUITO GRATO :D

VALLWWWWW SEGUE CODIGO ABAIXO:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <iostream>

#include <ctype.h>

#include <windows.h>

#define MAX 1000

//ESTRUTURAS

typedef struct Associados{

int cod;

char nome[30];

char sobre_nome[30];

int CPF;

int Data_de_Associacao;

float Saldo_em_Conta;

};

//ESTRUTURAS GLOBAIS

Associados Associado[MAX];

void cadastra_cliente();

void print_Associado();

void ordena (Associados vet[], int inicio, int fim);

int num_Associados=0;

int main()

{

cadastra_cliente();

print_Associado();

ordena (Associado, 0, num_Associados);

print_Associado();

getch();

}

void cadastra_cliente()

{

Associado[0].cod=4;

strcpy (Associado[0].nome, "AAA");

strcpy (Associado[0].sobre_nome, "AAA");

Associado[0].CPF=123;

Associado[0].Data_de_Associacao=123;

Associado[0].Saldo_em_Conta=50;

num_Associados++;

Associado[1].cod=3;

strcpy (Associado[1].nome, "BBBB");

strcpy (Associado[1].sobre_nome, "BBBB");

Associado[1].CPF=456;

Associado[1].Data_de_Associacao=456;

Associado[1].Saldo_em_Conta=100;

num_Associados++;

Associado[2].cod=2;

strcpy (Associado[2].nome, "CCCC");

strcpy (Associado[2].sobre_nome, "CCCC");

Associado[2].CPF=789;

Associado[2].Data_de_Associacao=789;

Associado[2].Saldo_em_Conta=150;

num_Associados++;

Associado[3].cod=1;

strcpy (Associado[3].nome, "DDD");

strcpy (Associado[3].sobre_nome, "DDD");

Associado[3].CPF=91;

Associado[3].Data_de_Associacao=91;

Associado[3].Saldo_em_Conta=200;

num_Associados++;

Associado[4].cod=7;

strcpy (Associado[4].nome, "EEE");

strcpy (Associado[4].sobre_nome, "EEEE");

Associado[4].CPF=91;

Associado[4].Data_de_Associacao=91;

Associado[4].Saldo_em_Conta=200;

num_Associados++;

}

void ordena (Associados vet[], int inicio, int fim)

{

printf ("\n ORDENANDO");

int i, j, pivo, aux;

i=inicio; j=fim;

pivo= (int)((inicio+fim)/2);

while (i<j)

{

while(vet.cod < pivo){ i+=1; }

while(vet[j].cod > pivo){ j-=1; }

if (i<=j)

{

aux=vet.cod;

vet.cod=vet[j].cod;

vet[j].cod=aux;

i+=1;

j-=1;

}

}

if (j>inicio){ ordena(vet, inicio, j); }

if (i<fim){ ordena(vet, i, fim); }

}

void print_Associado()

{

int i=0;

while (i<num_Associados)

{

printf("\n\n CODIGO: %d", Associado.cod);

printf("\n NOME: %s", Associado.nome);

printf("\n SOBRENOME: %s", Associado.sobre_nome);

printf("\n CPF: %d", Associado.CPF);

printf("\n DATA: %d", Associado.Data_de_Associacao);

printf("\n SALDO BRUTO: %.2f", Associado.Saldo_em_Conta);

i++;

}

getch();

}//FIM IMPRIME ASSOCIADOS

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

O meu colega Marciel... me ajudou a solucionar...

eu estava pegando a posição do vetor e não o valor da posição...

e estava passando o tamanho do vetor com uma posição a mais!

ordena (Associado, 0, num_Associados-1);

e

pivo= (int)((inicio+fim)/2);

pivo=vet[pivo].cod;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...