jueves, 5 de enero de 2017

ORDENAMIENTO POR SELECCIÓN

ORDENAMIENTO POR SELECCION  
El ordenamiento por selección (Selection Sort en inglés) es un algoritmo de ordenamiento que requiere O(n^2) operaciones para ordenar una lista de n elementos.
Su funcionamiento es el siguiente:

  • Buscar el mínimo elemento de la lista
  • Intercambiarlo con el primero
  • Buscar el mínimo en el resto de la lista
  • Intercambiarlo con el segundo
Y en general:

  • Buscar el mínimo elemento entre una posición i y el final de la lista
  • Intercambiar el mínimo con el elemento de la posición i
De esta manera se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:
para i=1 hasta n-1
    minimo = i;
    para j=i+1 hasta n
        si lista[j] < lista[minimo] entonces
            minimo = j /* (!) */
        fin si
    fin para
    intercambiar(lista[i], lista[minimo])
fin para 
 
 

 
seleccion 
#include<stdio.h> 
#include<conio.h> 
int x[4]={1,4,8,6}; 
int n=4,j=0,i=0; 
int temp=0,minimo=0; 
void main(){ 
clrscr(); 
for(i=0;i<n-1;i++) 

minimo=i; 
for(j=i+1;j<n;j++) 

if(x[minimo] > x[j]) 

minimo=j; 


temp=x[minimo]; 
x[minimo]=x;
x=temp;
}
for(i=0;i<n;i++)
{
printf("%d",x);
}
getch();
}
EJERCICIOS METODO DE ORDENAMIENTO EJERCICIO 01
#include <stdio.h>
#define SIZE 7
void main(void) {
  int vector[SIZE];
  int j, i, temp;
  printf("Introduce los %d valores para ordenar:\n", SIZE);
  for(i=0; i<SIZE; i++) {
     printf("%d: ", i+1);
     scanf("%d", &vector[i]);
     printf("\n");
  }
  /* se aplica el algoritmo de la burbuja */
  for(i=0; i<(SIZE-1); i++) {
     for (j=i+1; j<SIZE; j++) {
        if(vector[j]<vector[i]) {
            temp=vector[j];
            vector[j]=vector[i];
            vector[i]=temp;
        }
     }
  }
  printf("El vector ordenado es:\n");
  for(i=0; i<SIZE ; i++) {
     printf("%d ", vector[i]);
  }
  printf("\n");
}
 
EJERCIO 02
 
#include <stdio.h>

#include <stdlib.h>

#include <string.h>
 

void OrdenaBurbuja (float v[], int n)

{

int t, h, e;

for (h=1; h<n; h++)

{

for(e=0; e<n;e++)

{

if (v[e]>v[e+1])

{

v[e+1] = t;

v[e] = v[e+1];

t= v[e];

}

}

}

}
 
 

void ImprimirVector(float v[], int n)

{

int i; 

for (i=0; i<n; i++)

{

printf("%f ", v[i]);

}

}
 

int main(int argc, char *argv[])

{

if(strcmp(argv[1], "burbuja")==0)

{

int n, i, m=2, o;

float *v;

{

n=argc-2; 

v =(float *)malloc(n*sizeof(float));

for (i=0; i<n; i++)

{

v[i] = atof(argv[i+2]);

}

}

OrdenaBurbuja(v, n);

ImprimirVector(v, n);

}

system("PAUSE"); 

return 0;

}

No hay comentarios:

Publicar un comentario