Jump to content
Fórum Script Brasil
  • 0

Ordenacao Quick Sort


Sartor

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...