Utilizar programación en lenguaje C para implementar: ordenar los 100 números enteros de entrada en orden ascendente (de mayor a menor) y generar los datos ordenados de acuerdo con diez números en cada línea.
#include
#define arrSize 100
typedef enum {swap_right,swap_left}swap_dir;
void init_arr (int* arr,int tamaño);
void quickSort(int* arr, int tamaño);
void print_arr(int* arr,int tamaño);
int main() {
int arr[arrSize];
printf("Ingrese %d enteros (enteros con valores absolutos inferiores a 100000 para una fácil visualización): \n ",arrSize);
init_arr(arr, arrSize);
printf("¡¡¡Entrada completa!!!\n");
printf( "Comenzar a ordenar\n");
quickSort(arr, arrSize);
printf("¡¡¡Finalizar clasificación!!!\n");
printf (" Iniciar salida\n");
print_arr(arr, arrSize);
printf("¡¡¡Finalizar salida!!!\n");
return 0 ;
}
void init_arr(int* arr, int tamaño) {
for (int i = 0; i < tamaño; i++) { p>
printf("Ingrese el entero %dth:",i+1);
scanf("%d",arr+i);
}
}
void quickSort(int* arr, int size) {
if (arr == NULL || size <= 1)
return;
int key_index = 0;
int key_num = arr[key_index];
int front_index = 0;
int back_index = tamaño - 1;
swap_dir dir = swap_right;
while (front_index < back_index) {
if (dir == swap_right) {
if (arr[back_index] < key_num) {
arr[key_index] = arr[back_index];
arr[back_index] = key_num; p >
key_index = back_index;
front_index++;
dir = swap_left;
}
else {
back_index--;
}
}
else if (dir == swap_left) {
if (arr[ índice_frontal ] > clave_
num) {
arr[key_index] = arr[front_index];
arr[front_index] = key_num;
key_index = front_index;
back_index--;
dir = swap_right;
}
más {
front_index++;
}
}
}
si (key_index > 0)
quickSort(arr,key_index);
if (key_index < tamaño -1)
quickSort((arr+key_index + 1),(tamaño - 1 - key_index));
}
void print_arr(int* arr, int tamaño) {
for (int i = 0; i < tamaño; i++) {
printf("%5d ",*(arr + i));
if ((i + 1) % 10 == 0) {
printf("\n");
} p>
}
}