algoritmo

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

algoritmo

Mensagempor tiagop » Sexta Abr 16, 2010 21:10

Algoritmo para ordenar um vector de números inteiros positivos; assuma que os elementos que se encontram no vector são valor inteiros positivos entre [1, 1000]; NÃO PODERÁ SER USADO AS COMPARAÇÕES ENTRE VALORES DO VECTOR, ou seja, V[i] > V[j]; não usar >, >=, <, <=. No final o algoritmo deve apresentar o número de operações (trocas) que
efectuou.

alguém me pode ajudar a encontrar um algoritmo para este problema???
tiagop
Aprendiz
Aprendiz
 
Mensagens: 31
Registado: Sexta Dez 02, 2005 22:02

Mensagempor vamosAeles » Segunda Abr 19, 2010 19:23

Boas,

se vires por exemplo no wiki tens la algoritmos que penso que obdecem ao que enuncias:
http://en.wikipedia.org/wiki/Sorting_algorithm

ve a parte dos algoritmos que não são 'comparison sorts'

[[]]
vamosAeles
Membro de Prata
Membro de Prata
 
Mensagens: 206
Registado: Quarta Jan 04, 2006 21:29
Localização: Lisboa/Proença

Re: algoritmo

Mensagempor LuisFilipe » Terça Abr 20, 2010 2:24

tiagop Escreveu:Algoritmo para ordenar um vector de números inteiros positivos; assuma que os elementos que se encontram no vector são valor inteiros positivos entre [1, 1000]; NÃO PODERÁ SER USADO AS COMPARAÇÕES ENTRE VALORES DO VECTOR, ou seja, V[i] > V[j]; não usar >, >=, <, <=. No final o algoritmo deve apresentar o número de operações (trocas) que
efectuou.

alguém me pode ajudar a encontrar um algoritmo para este problema???
Mas que brincadeira é essa ... ?
Devias explicar para não andar a fazer de parvo.

Para valores de 1 a 1000 é simples caso possas criar outro vector com 1000 de tamanho.

Assim coloca no local do numero o numero no novo vector.

Novo[ V[i] ] = V[i] ou =1 ou o que quiseres.

A partir daí o que for <> 0 no novo vector é o valor que está dentro que é igual à posição e está ordenado.

Poderá ser um vector de bit's (para poupar lol).

Mas isto deve ser uma chalaça ha ha ha
LuisFilipe
Membro Diamante
Membro Diamante
 
Mensagens: 1270
Registado: Domingo Set 04, 2005 22:12

Mensagempor tiagop » Terça Abr 20, 2010 10:42

desculpa, mas nao estou a ver como isso seria a solução do problema... nao consigo perceber bem o algoritmo. criar um outro vector e meter valor 1?? :S

o programa que tenho de desenvolver vai ser em Lisp ou seja, eu tenho uma lista com (1 6 3 22 14) e depois tem de ficar (1 3 6 14 22) mas nao posso usar os sinais de <, <=, >, >=. como é que vou comparar se um é maior que outro para meter em 1º lugar na lista e assim sucessivamente...

cump
tiagop
Aprendiz
Aprendiz
 
Mensagens: 31
Registado: Sexta Dez 02, 2005 22:02

Mensagempor JoaoRosa » Quarta Abr 21, 2010 17:50

tiagop Escreveu:desculpa, mas nao estou a ver como isso seria a solução do problema... nao consigo perceber bem o algoritmo. criar um outro vector e meter valor 1?? :S

o programa que tenho de desenvolver vai ser em Lisp ou seja, eu tenho uma lista com (1 6 3 22 14) e depois tem de ficar (1 3 6 14 22) mas nao posso usar os sinais de <, <=, >, >=. como é que vou comparar se um é maior que outro para meter em 1º lugar na lista e assim sucessivamente...

cump


este é dos típicos problemas de programação, para separar as águas...

usas as operações aritméticas! :wink:
Portátil: LG LW65-P4XP c/ upgrade: Seagate Momentus 7200.1 (2.5" IDE 7200rpm 80Gb) & 2x1GB Kingston PC 4200 533 MHz DDR2
Disco Externo: Caixa Point of View Hdd Enclosure 2.5" & Disco Fujitsu MHV2080AT (2.5" IDE 4200rpm 80Gb)
Avatar do Utilizador
JoaoRosa
Membro de Prata
Membro de Prata
 
Mensagens: 439
Registado: Quinta Nov 03, 2005 21:38
Localização: Oliveira de Azeméis

Mensagempor Danone » Sexta Abr 30, 2010 21:28

Só não podes comparar v[i] a v[i+1], mas nada de impede de comparar v[i] - v[i+1] > 0

abraço
8086@8MHz com 768k de RAM e 20 MB de HDD
Danone
Membro de Ouro
Membro de Ouro
 
Mensagens: 758
Registado: Quinta Abr 22, 2004 23:55

Mensagempor CryptorX » Sexta Abr 30, 2010 22:25

Eu posso estar a fazer uma confusão brutal... mas isso não é aquela cena dos rocksorts, bubblesorts, shellsorts e quicksorts? É que se for posso dar uma mão, mas confirmem só para não estar aqui a ter um trabalho consideravél á toa.

Cumps
CryptorX
Membro de Ouro
Membro de Ouro
 
Mensagens: 913
Registado: Quinta Nov 20, 2008 7:35
Localização: Lisboa, Xabregas

Mensagempor Danone » Sábado Mai 01, 2010 11:50

CryptorX Escreveu:Eu posso estar a fazer uma confusão brutal... mas isso não é aquela cena dos rocksorts, bubblesorts, shellsorts e quicksorts? É que se for posso dar uma mão, mas confirmem só para não estar aqui a ter um trabalho consideravél á toa.

Cumps

sim e não.
Sim são algoritmos de ordenação mas
Não, são algoritmos de comparação que ele não quer.

Sugiro que googles (adoro este verbo) "non-comparison sorts" que hás de ter hits (bead, bucket, radix, etc.)

Abraço
8086@8MHz com 768k de RAM e 20 MB de HDD
Danone
Membro de Ouro
Membro de Ouro
 
Mensagens: 758
Registado: Quinta Abr 22, 2004 23:55

Mensagempor LuisFilipe » Sábado Mai 01, 2010 13:38

JoaoRosa Escreveu:
tiagop Escreveu:desculpa, mas nao estou a ver como isso seria a solução do problema... nao consigo perceber bem o algoritmo. criar um outro vector e meter valor 1?? :S

o programa que tenho de desenvolver vai ser em Lisp ou seja, eu tenho uma lista com (1 6 3 22 14) e depois tem de ficar (1 3 6 14 22) mas nao posso usar os sinais de <, <=, >, >=. como é que vou comparar se um é maior que outro para meter em 1º lugar na lista e assim sucessivamente...

cump


este é dos típicos problemas de programação, para separar as águas...

usas as operações aritméticas! :wink:
Dá uma olhada no Lisp e percebes o porquê do 'enunciado'...

http://en.wikipedia.org/wiki/Common_Lis ... on_objects
LuisFilipe
Membro Diamante
Membro Diamante
 
Mensagens: 1270
Registado: Domingo Set 04, 2005 22:12


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron