//Gonzalez ortega carlos //materia: Estructura de Datos Grupo : 2802 //Profesor: Rubio Alejandro //Programa que realiza ordenacion por el Metodo de Shell #include #include #define N 100/*Maximo de elementos*/ main() { int a[N];/*declaracion del arreglo*/ int i, j, k, aux, inc, n; clrscr(); gotoxy(24,2); printf("Ordenacion por el Metodo de Shell"); gotoxy(5,6);printf("Introduzca el tamaņo del arreglo:"); gotoxy(5,45);scanf("%d", &n);/*tamaņo del arreglo*/ gotoxy(5,8);printf("Introduce los valores: "); for (i=1; i<=n; i++) {gotoxy(i*4+1,9);scanf("%d", &a[i]);}/*lee y almacena los elementos en el arreglo*/ inc=n/2;/*obtiene el valor de incremento para empezar a ordenar*/ while (inc>0) { for (i=inc+1; i<=n; i++) { j=i-inc;/*obtiene la posicion inicial del arreglo*/ while (j>0){ if (a[j] > a[j+inc]){/*obtiene el mayor de los elementos*/ aux=a[j];/*alamacena en la variable auxiliar aux el elemento mayor*/ a[j]=a[j+inc];/*copia el elemento menor a la posiscion en donde se encontraba el elemento mayor*/ a[j+inc]=aux;/*copia elemento mayor contenido en aux a la posicion del arreglo en donde se encontraba el elemento menor*/ j=j-inc;/*decrementa la posicion del arreglo*/ } else j=0; } } inc=inc/2;/*obtiene el valor de incrementos para empezar a ordenar*/ } gotoxy(5,12); printf("El arreglo ordenado es: "); for (i=1; i<=n; i++) printf("%d ", a[i]);/*Imprime el arreglo ordenado*/ getch(); return 0; }