Ir ao conteúdo

Algoritmo De Ordenacao


Computado

Posts recomendados

Postado

Alguem teria conhecimento de algum algoritmo de ordenacao que ordena qualquer coisa, tanto letras como numeros? Tem aquele QSORT do C so que não sei o codigo.

Postado

Se você pensar um pouco sai a solução...

O mais simples é o bubble sort... VocÊ vai passando pela lista e daí compara o elemento com o imediatamente após ele. Se eles tiverem fora de ordem, troca.

Exemplo (cada passo é uma linha)

adbce (d e b fora de ordem)

abdce (d e c fora de ordem)

abcde (ordem correta)

Agora, pra passar para C, aí é com você.

Postado

Achei esse codigo em um livro que a algum tempo eu peguei no emule, vê se dá pra ajudar no raciocinio para você fazer o seu proprio codigo ^_^.

O nome do livro é Computer Science - Sorting & Searching Algorithm Book.

PS: Não testei isso.

typedef int T;

typedef int TblIndex;

#define CompGT(a,B) (a > B)

T *Partition(T *Lb, T *Ub) {

   T V, Pivot, *I, *J, *P;

   unsigned int Offset;

  /*****************************

   * partition Array[Lb..Ub] *

   *****************************/

  /* select pivot and exchange with 1st element */

   Offset = (Ub - Lb)>>1;

   P = Lb + Offset;

   Pivot = *P;

   *P = *Lb;

   I = Lb + 1;

   J = Ub;

   while (1) {

      while (I < J && CompGT(Pivot, *I)) I++;

      while (J >= I && CompGT(*J, Pivot)) J--;

      if (I >= J) break;

      V = *I;

      *I = *J;

      *J = V;

      J--; I++;

   }

  /* pivot belongs in A[j] */

   *Lb = *J;

   *J = Pivot;

   return J;

}

void QuickSort(T *Lb, T *Ub) {

   T *M;

  /**************************

   * Sort array A[Lb..Ub] *

   **************************/

   while (Lb < Ub) {

     /* quickly sort short lists */

      if (Ub - Lb <= 12) {

         InsertSort(Lb, Ub);

         return;

      }

     /* partition into two segments */

      M = Partition (Lb, Ub);

     /* sort the smallest partition */

     /* to minimize stack requirements */

      if (M - Lb <= Ub - M) {

         QuickSort(Lb, M - 1);

         Lb = M + 1;

      } else {

         QuickSort(M + 1, Ub);

         Ub = M - 1;

      }

   }

}

Postado

Quick sort feito em linguagem funcional Clean

module funcQsort;

import StdEnv;

qsort :: [a] -> [a] | Ord a;

qsort [] = [];

qsort [a:xs] = qsort [x \\ x <-xs | x<a] ++ [a] ++ qsort [x \\ x<-xs | x>= a];

Start= qsort [54,3,89,2,6,8,2,75,8];

A lista pode ser de qualquer coisa como é mostrado em:

qsort :: [a] -> [a] | Ord a; % isso é igual a usado em automatos.

aqui ele indica a parada do algoritmo

qsort [] = []; % quando a lista for vazia ele para.

difícil explicar pra você mas aqui ~e uma notacao matematica.

qsort [a:xs] = qsort [x \\ x <-xs | x<a] ++ [a] ++ qsort [x \\ x<-xs | x>= a];

tipo é bem pequeno, mas funciona perfeitamente...hehehe

Postado

quick sort feito em C "clean", para char.. :rolleyes:

int fcao_compara(void *a, void * B )

{

return (*a)>(* B ); //vai dar warning por tipo... eu não fiz o cast pra não ficar confuso...

}

codigo:

(...)

char vetor[20];

/*qsort ( void * base, size_t num, size_t width, int (*fncompare)(const void *, const void *) ); */

qsort (vetor,20, sizeof(char),fcao_compara);

Referencia:

http://www.cplusplus.com/ref/cstdlib/qsort.html

Postado
quick sort feito em C "clean", para char.. 

int fcao_compara(void *a, void * B )

{

return (*a)>(* B ); //vai dar warning por tipo... eu não fiz o cast pra não ficar confuso...

}

codigo:

(...)

char vetor[20];

/*qsort ( void * base, size_t num, size_t width, int (*fncompare)(const void *, const void *) ); */

qsort (vetor,20, sizeof(char),fcao_compara);

Referencia:

http://www.cplusplus.com/ref/cstdlib/qsort.html

Massa mas a diferença de C para Clean (isso é uma linguagem mesmo)

é q o qsort que coloquei aí, está sendo implementado, apenas com aquelas linhas de códigos, e em C, o qsort é uma função pornta do C....

Veja a linguagem....

http://www.cs.kun.nl/~clean/

Essa linguagem é pra doido :tantan: , ou fãs de matemática :D

Postado

é bem parecido com prolog, pelo que eu vi........

sei lá, tem alguns usos específicos melhores........

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!