Dev - C++ - Análisis Sensillo método seleccion

 
Vista:
sin imagen de perfil
Val: 13
Ha disminuido su posición en 16 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Análisis Sensillo método seleccion

Publicado por Marvin (8 intervenciones) el 11/05/2022 19:24:42
Amigos una consulta estaba realizando ordenamientos con valores aleatorios y en el programa en C le pongo contador y se visualiza cuantas comparaciones hace.

Pero cuando los números están ordenados digamos de 0 a 100, le ingreso el contador y siempre da 0.

No se a que conclusión llegar. Como el porgrma sabe que esta ordenado porque para saber que el reconozca que está ordenado debe comparar no?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Análisis Sensillo método seleccion

Publicado por Alfil (1444 intervenciones) el 11/05/2022 20:07:34
¿Puedes poner el código para que lo revisemos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 13
Ha disminuido su posición en 16 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Análisis Sensillo método seleccion

Publicado por Marvin (8 intervenciones) el 11/05/2022 20:23:24
ahi esta mi pregutna era como el programa sabe que esta ordenado porque el contador no entra al if, porque para darse cuenta es necesario comparar si es cierto?

//Ordenacion por seleccion//
#include<stdio.h>
#include<conio.h>

#define TAM 100
int main(){

int vector[TAM],x,valor;
int i,j,minimo,aux,compa;


for(i=0;i<TAM;i++){
vector[i]=i;
}


compa=0;
for(i=0;i<TAM-1;i++){
minimo=i;
for(j=i+1;j<TAM;j++){
if(vector[j]<vector[minimo]) {
compa++; // comparaciones//
}

}
aux=vector[i];
vector[i]=vector[minimo];
vector[minimo]=aux;
}


printf("\nVECTOR ORDENADO\n");
for(i=0;i<TAM;i++){
printf("\t%i ",vector[i]);
}


printf("\nCantidad de compraciones %i ",compa);

return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Análisis Sensillo método seleccion

Publicado por Alfil (1444 intervenciones) el 12/05/2022 16:29:23
Te pongo una función típica de ordenación, en este caso por inserción directa.

Fíjate que asignas los valores ya ordenados, por lo que la función es un tanto inútil, prueba a asignar valores aleatorios al vector.

1
vector[i] = rand() % 99;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
 
#define TAM 100
 
void ordenar(int v[], int n);
 
int main()
{
    int vector[TAM];
 
    for (int i = 0; i < TAM; i++)
       vector[i] = i;
 
    ordenar(vector, TAM);
 
    printf("Vector ordenado: ");
    for (int i = 0; i < TAM; i++)
        printf("%d ", vector[i]);
 
    return 0;
}
 
void ordenar(int v[], int n)
{
    int valor;
    int j;
 
    for (int i = 1; i < n; i++)
    {
        valor = v[i];
        j = i;
        while (j > 0 && valor < v[j-1])
        {
            v[j] = v[j-1];
            j--;
        }
        v[j] = valor;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar