Enviado em 28/10/2020 - 23:45h
Boa noite pessoal.#include <stdio.h>
#include <stdlib.h>
void selection_sort(int *v, int tam);
void insertion_sort(int *v, int tam);
int main() {
int i;
int v[10] = {2, 5, 6, 1, 7, 4, 9, 8, 10, 3};
printf("\n");
printf("\nVetor inicial: \n");
for (i = 0; i < 10; i++)
{
printf("%d ", v[i]);
}
printf("\n");
printf("\nInsertion sort:");
insertion_sort(v, 10);
for (i = 0; i < 10; i++)
{
printf("%d ", v[i]);
}
printf("\n");
printf("\n");
return 0;
}
void insertion_sort(int *v, int tam) {
int i, j, pivo, trocas, comp;
trocas = 0;
comp = 0;
for ( i = 1; i < tam; i++)
{
pivo = v[i];
j = i - 1;
while (j >= 0 && v[j] > pivo)
{
v[j + 1] = v[j];
j--;
trocas++;
comp++;
}
v[j+1] = pivo;
}
printf("\nTrocas: %d Comparações: %d\n", trocas, comp);
}
Enviado em 31/10/2020 - 11:39h
Ola,Enviado em 29/10/2020 - 00:01h
So corrigindo pessoal, abaixo está o código completo, tenho o selection sort e o insertion sort implemetados. No primeiro as contagem da certo, já no segundo não.#include <stdio.h>
#include <stdlib.h>
void selection_sort(int *v, int tam);
void insertion_sort(int *v, int tam);
int main() {
int i;
int v[10] = {2, 5, 6, 1, 7, 4, 9, 8, 10, 3};
printf("\n");
printf("\nVetor inicial: \n");
for (i = 0; i < 10; i++)
{
printf("%d ", v[i]);
}
printf("\n");
printf("\nSelection sort:");
selection_sort(v, 10);
for (i = 0; i < 10; i++)
{
printf("%d ", v[i]);
}
printf("\n");
printf("\nInsertion sort: \n");
insertion_sort(v, 10);
for (i = 0; i < 10; i++)
{
printf("%d ", v[i]);
}
printf("\n");
printf("\n");
return 0;
}
void selection_sort(int *v, int tam) {
int i, j, min, pivo, comp, trocas;
comp = 0;
trocas = 0;
for (i = 0; i < (tam - 1); i++)
{
min = i;
for ( j = (i+1); j < tam; j++)
{
if (v[j] < v[min])
{
min = j;
comp++;
}
}
if (i != min)
{
pivo = v[i];
v[i] = v[min];
v[min] = pivo;
trocas++;
}
}
printf("\nTrocas: %d Comparações: %d\n", trocas, comp);
}
void insertion_sort(int *v, int tam) {
int i, j, pivo, trocas, comp;
trocas = 0;
comp = 0;
for ( i = 1; i < tam; i++)
{
pivo = v[i];
j = i - 1;
while (j >= 0 && v[j] > pivo)
{
v[j + 1] = v[j];
j--;
trocas++;
comp++;
}
v[j+1] = pivo;
}
//printf("\nTrocas: %d Comparações: %d\n", trocas, comp);
}
Enviado em 31/10/2020 - 12:06h
Agora entendi !!! então poderia me dar um dica pra melhor organizar o código ? Seria melhor eu colocar o mais vetores desordenados, um pra cada método ou vetores pivos, para receber os vetores ordenados ? Haveria um jeito de usar um só vetor ?Enviado em 31/10/2020 - 13:06h
Ola,Instalação do Ambiente .NET (#C) no Slackware 15.0
Kali On The Box - Colocando o Kali para rodar no Raspberry Pi
Como contribuir com a atualização de pacotes no Void Linux
Como montar um bucket Amazon S3 no Linux
Validar módulo do VirtualBox sem desabilitar o Secure Boot
Obtendo lista dos repositórios de pacotes em sistemas derivados do Debian
Simular ou forçar resolução em Ambiente GNOME (0)
o polybar fica se sobrepondo em cima dos jogos (3)