Ir para conteúdo
  • Cadastre-se

dev botao

preciso de ajuda com este código Ordenação através de insertion e Selection


  • Este tópico foi criado há 2160 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Alguem poderia me ajudar com esse codigo de ordenação?

procedure TForm1.btnInsertionClick(Sender: TObject);
var aux, i, j: integer ;
begin

  for i := 1 to 5000 do
     gridInsert.cells[1,i] := lista.lines[i-1];

  for i := 1 to 5000 do
      for j := 1 to 4999 do
       aux := strtoint(gridInsert.cells[1,j]);
    //   j := j-1;
       gridInsert.cells[1,j] := gridInsert.cells[1,j-1];

       While ((j > 1) AND (aux < strtoint(gridInsert.cells[1,j-1]) )) do
          begin
            gridInsert.cells[1,j] :=  gridInsert.cells[1,j-1];
           j := j - 1;
            gridInsert.cells[1,j] := inttostr(aux);
             End;

  End;                          

A lista chega aparecer na stringrid mas não ordena.                             

Link para o comentário
Compartilhar em outros sites

6 horas atrás, Dercide Alvarez disse:

Qual a finalidade ?

Quer ordenar o que ? 

Qual o origem dos dados ?

Não seria mais facil ordenar em um DataSet ?

 

Dercide.

Olá, A finalidade e ordena uma lista de números embaralhados em uma tsstringrid.

Na verdade e um trabalho universitário  da cadeira de estrutura de dados que estou fazendo de Sistemas de Informações.

Mas também já resolvi ele hoje de manha, agora está faltando apenas o Merger e o Quick sort.

A solução que obtive é que faltou a condição if e uma variável boolean e só precisava de apenas dois loopings.

procedure TForm1.btnInsertionClick(Sender: TObject);
var  i, j: integer ;
var aux: integer;
var found : boolean;
begin
   for i := 1 to 5000 do
    gridInsert.cells[1,i] := lista.lines[i-1];
   for i := 2 to 5000 do
    begin
   aux := strtoint(gridInsert.cells[1,i]);
   j := i-1;
   found := false;
   while (j >= 1)
   and (not found) do
   if (aux < strtoint(gridInsert.cells[1,j])) then
   begin
   gridInsert.cells[1,j+1] := gridInsert.cells[1,j];
   j := j-1;
   end
   else
   found := true;
   gridInsert.cells[1,j+1] := inttostr(aux);
   end
   End;
	

 

20180624_073916.jpg

20180624_074026.jpg

Editado por Phillipe Silva
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2160 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.