viciado 1 Denunciar post Postado Outubro 19, 2009 Alguém tem o código de ordenação por inserção binária em C ? Gostaria de analisar o código Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 19, 2009 http://brpreiss.com/books/opus4/html/page491.html http://jeffreystedfast.blogspot.com/2007/02/binary-insertion-sort.html Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Outubro 19, 2009 http://brpreiss.com/books/opus4/html/page491.html http://jeffreystedfast.blogspot.com/2007/02/binary-insertion-sort.html Tentei aqui e diz q no segundo for da função o i não está declarado #include <stdio.h> #include <stdlib.h> void insercao_binaria(int v[], int tam){ int i,k,x,L,R,m; for(i=2;i<=tam;i++){ x = v[i]; L = 1; R = i; while(L<R){ m = (L+R) / 2; if(v[m] <= x) L = m + 1; else R = m; } for(j=i;j>R;j++) v[j] = v[j-1]; v[R] = x; } } int main() { int v[] = {5,3,1,4,7}; int k; insercao_binaria(v,5); for(k=0;k<5;k++) printf("v[%d] %d \n",(k+1),v[k]); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 19, 2009 int j; Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Outubro 19, 2009 int j; A sim, obrigado. Agora aparece a seguinte mensagem de erro: Permission denied Id return 1 exit status #include <stdio.h> #include <stdlib.h> void insercao_binaria(int v[], int tam){ int i,j,x,L,R,m; for(i=2;i<=tam;i++){ x = v[i]; L = 1; R = i; while(L<R){ m = (L+R) / 2; if(v[m] <= x) L = m + 1; else R = m; } for(j=i;j>R;j++) v[j] = v[j-1]; v[R] = x; } } int main() { int v[] = {5,3,1,4,7}; int k; insercao_binaria(v,5); for(k=0;k<5;k++) printf("v[%d] %d \n",(k+1),v[k]); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 19, 2009 Se a variável não está declarada, declare. Não poste o código inteiro por causa de erro que pode ser resolvido lendo e interpretando as mensagens do compilador. Seu código dá falha de segmentação. Veja as condições. Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Outubro 19, 2009 Se a variável não está declarada, declare. Não poste o código inteiro por causa de erro que pode ser resolvido lendo e interpretando as mensagens do compilador. Seu código dá falha de segmentação. Veja as condições. Agora as variaveis estão declaradas. Se o erro que aparece, agora, não diz em q parte especifíca é do programa como não vo postar o programa inteiro Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 19, 2009 Se o erro que aparece, agora, não diz em q parte especifíca é do programa como não vo postar o programa inteiro Se não informa a linha do erro, a IDE não presta. Troque. Esse tipo de coisa é detectável com leitura atenta do código. Simples assim. Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Outubro 19, 2009 Como se resolve esse problema de falha de segmentação ? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 20, 2009 Já falei no post #6. Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Outubro 20, 2009 Já falei no post #6. Eu estou fazendo errado o if and else ? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 20, 2009 Se está dando falha de segmentação, alguma coisa não está certa e normalmente são as condições de acesso à memória. Se eu não me engano, não é a primeira vez que você tem esse problema. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 20, 2009 tente perceber o pq esta acontecendo isso: for(j=i;j>R;j++){ printf("%d..\n",j); v[j] = v[j-1]; } []s Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Outubro 21, 2009 tente perceber o pq esta acontecendo isso: for(j=i;j>R;j++){ printf("%d..\n",j); v[j] = v[j-1]; } []s Mais não tem esse código, que você colocou, no programa. Se for este, não entendi o que está errado for(j=i;j>R;j++) v[j] = v[j-1]; v[R] = x; Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 21, 2009 Existe essa parte no código que você postou... Os códigos dos links funcionam. Logo, o código errado é o teu. Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Outubro 21, 2009 Existe essa parte no código que você postou... Os códigos dos links funcionam. Logo, o código errado é o teu. Qual parte do código está errada ? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 21, 2009 Execute o código e descubra. Pra isso serve debugger. Além disso você já sabe o que acontece no loop. 1+1 = ? Compartilhar este post Link para o post Compartilhar em outros sites