Ir ao conteúdo

Posts recomendados

Postado

Dale galera, a um tempinho eu conheci um algorítimo de ordenação, e recentemente estou aprofundando os estudos sobre algorítimos de ordenação.
Gostaria de descobrir o nome desse algorítimo... Eu pensava que era bubble sort , mas dai hoje descobri que na real o bubble é beeeem diferente..

Se alguém souber me diga pls.

#include <stdio.h>

int main(int argc, char const *argv[])
{
	int lista[10]={2,3,4,45,56,32,1,24,2,1};
	int aux;

	printf("antes:");
	for (int i = 0; i < 10; ++i)
	{
		printf("%d ",lista[i]);
	}
	printf("\nDepois:");

	for (int i = 0; i < 10; ++i)
	{
		for (int j = 0; j < 10; ++j)
		{
			if(lista[i]<lista[j]){
			
				aux = lista[i];
				lista[i]=lista[j];
				lista[j]=aux;
			
			}
		}
	}

	for (int i = 0; i < 10; ++i)
	{
		printf("%d ",lista[i]);
	}
	return 0;
}

 

  • Curtir 1
Postado

É um algoritmo de ordenação por seleção (selection sort), mas está errado, pois no segundo ciclo for o j deve começar com valor i+1, não 0.

 

Fazendo essa correção o algoritmo seria uma selection sort válido, mas é instável, e faz muito mais trocas do que o necessário.

 

Uma versão melhor pode ser vista no próprio wikipedia:

void selection_sort(int num[], int tam) { 
  int i, j, min, aux;
  for (i = 0; i < (tam-1); i++) 
  {
     min = i;
     for (j = (i+1); j < tam; j++) {
       if(num[j] < num[min]) 
         min = j;
     }
     if (num[i] != num[min]) {
       aux = num[i];
       num[i] = num[min];
       num[min] = aux;
     }
  }
}

Nessa versão se a lista tiver 10 elementos, i vai de 0 a 8, economizando 1 ciclo pois não precisa checar o índice 9, j vai de i+1 até 9, e cada troca é feita apenas 1 vez por ciclo pois o que o algoritmo faz é buscar e selecionar o menor valor entre todos o números que ainda não foram ordenados da lista, e guarda o índice dele, e aí no fim faz a troca colocando o menor valor selecionado na i-ésima posição da lista.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!