Jump to content
Sign in to follow this  
mandelacruz

Ordenação por inserção?

 Read 1 minute

Recommended Posts

 Read 1 minute

Olá ,queria saber se esse codigo que criei seria a mesma coisa do algoritmo de ordenação por inserção. Tentei me expressar bem nos comentarios para que entendam.

Tentei criar esse algoritmo escrito de uma maneira diferente do que é apresentado nos livros e tal. Ele ta apresentando o resultado final tudo ok, mas fui ver a quantidade de trocas desse meu código com outro de um livro , vi que esse meu faz muito mais trocas dai me surgiu a duvida se realmente fiz ele certo.

#include <stdio.h>
#include <string.h>

void inserction(char *p, int caracs);

int main()
{
    char s[10];
    printf("Digite uma string:\n");
    scanf("%10[^\n]", s);
    printf("--------------------------------------------------------------\n");
    printf("String antes de ser ordenada por Inserction(InserctionSort)\n\t%s\n", s);
    inserction(s, strlen(s));
    printf("String depois de ser ordenada por Inserction(InserctionSort)\n\t%s\n", s);
    return 0;
}

void inserction(char *p, int caracs)
{
    for(int i=0; i<caracs-1; i++)// controlador da posição atual do vetor
    {
        for(int j=i+1; j<caracs; j++)// controlador da posição sucessora da atual posição
        {
            if(p[j] < p[i])// comparação da a posição atual com o seu sucessor. Caso V, declara uma
                           //variável temporária e faz as trocas
            {
                char t;
                t = p[i];
                p[i] = p[j];
                p[j] = t;
                if(i >= 1 && p[i] < p[i-1])//começo da comparação com o antecessor. Caso V, faz as trocas
                {
                    t = p[i-1];
                    p[i-1] = p[i];
                    p[i] = t;
                }
            }
        }
    }
}

Desde já obrigado!!

O código de livro que me referi foi esse aqui:

#include <stdio.h>
#include <string.h>

void insert(char *item, int count);

int main()
{
    char s[10];
    printf("Digite uma string:\n");
    scanf("%10[^\n]", s);
    printf("---------------------------------------------------\n");
    printf("String antes de ser ordenado por inserção: %s\n", s);
    insert(s, strlen(s));
    printf("\nString depois de ser ordenado por inserção: %s\n", s);
    return 0;
}

void insert(char *item, int count)
{
    int a, b;
    char t;
    for(a=1; a<count; ++a)
    {
        t = item[a];
        for(b=a-1; b>=0 && t<item[b]; b--)
        {
            item[b+1] = item[b];
        }
        item[b+1] = t;
    }
}

 

Share this post


Link to post
Share on other sites
Posted (edited)
 Read less than a minute

Que vergonha alheia desse post que fiz, nao sei como eu escrevi esse codigo. Mds como sou burro... Não tem nada haver com o algoritmo de inserção.

Edited by mandelacruz
  • Curtir 1

Share this post


Link to post
Share on other sites
 Read less than a minute

Pára com isso, você é muito inteligente em dedicar tempo estudando programação em C. Admirável também postar seus avanços aqui. Isso não só é bom pra ti, mas ajuda e inspira outras pessoas, ou seja, é um sinal de no-ego muito forte. Parabéns e muito obrigado! 👍

Share this post


Link to post
Share on other sites
 Read less than a minute

@mandelacruz, lembro a você que "herrar é umano" e, assim como Fernando disse, a iniciativa de aprender é sempre louvável!
Meu comentário deve-se apenas ao fato de que algumas informações são facilmente encontradas...

[[]]ão
Fred

  • Curtir 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...