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
por 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

-
- Mensagens: 31
- Registado: Sexta Dez 02, 2005 22:02
por 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

-
- Mensagens: 206
- Registado: Quarta Jan 04, 2006 21:29
- Localização: Lisboa/Proença
por 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

-
- Mensagens: 1270
- Registado: Domingo Set 04, 2005 22:12
por 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

-
- Mensagens: 31
- Registado: Sexta Dez 02, 2005 22:02
por 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!

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)
-

JoaoRosa
- Membro de Prata

-
- Mensagens: 439
- Registado: Quinta Nov 03, 2005 21:38
- Localização: Oliveira de Azeméis
por 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

-
- Mensagens: 758
- Registado: Quinta Abr 22, 2004 23:55
por 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

-
- Mensagens: 913
- Registado: Quinta Nov 20, 2008 7:35
- Localização: Lisboa, Xabregas
por 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

-
- Mensagens: 758
- Registado: Quinta Abr 22, 2004 23:55
por 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!

Dá uma olhada no Lisp e percebes o porquê do 'enunciado'...
http://en.wikipedia.org/wiki/Common_Lis ... on_objects
-
LuisFilipe
- Membro Diamante

-
- Mensagens: 1270
- Registado: Domingo Set 04, 2005 22:12
Voltar para Programação
Quem está ligado:
Utilizadores a ver este Fórum: Nenhum utilizador registado e 0 visitantes