Caso # | Resultado | Tiempo | Memoria |
---|---|---|---|
#1 |
Correcto
|
0.005 s | 1 KBi |
#2 |
Correcto
|
0.004 s | 36 KBi |
#3 |
Correcto
|
0.004 s | 5 KBi |
#4 |
Correcto
|
0.004 s | 20 KBi |
#5 |
Correcto
|
0.004 s | 17 KBi |
#6 |
Correcto
|
0.005 s | 57 KBi |
#7 |
Correcto
|
0.04 s | 2 KBi |
#8 |
Correcto
|
0.054 s | 4 KBi |
#9 |
Correcto
|
0.077 s | 2 KBi |
#10 |
Correcto
|
0.045 s | 2 KBi |
#11 |
Correcto
|
0.054 s | 3 KBi |
#12 |
Correcto
|
0.045 s | 3 KBi |
#13 |
Correcto
|
0.065 s | 2 KBi |
#14 |
Correcto
|
0.047 s | 5 KBi |
#15 |
Correcto
|
0.048 s | 2 KBi |
#16 |
Correcto
|
0.068 s | 3 KBi |
#17 |
Correcto
|
0.062 s | 2 KBi |
#18 |
Correcto
|
0.048 s | 59 KBi |
#19 |
Correcto
|
0.051 s | 5 KBi |
#20 |
Correcto
|
0.052 s | 5 KBi |
#21 |
Correcto
|
0.044 s | 3 KBi |
#22 |
Correcto
|
0.053 s | 3 KBi |
#23 |
Correcto
|
0.058 s | 6 KBi |
#24 |
Correcto
|
0.046 s | 2 KBi |
#25 |
Correcto
|
0.043 s | 3 KBi |
#26 |
Correcto
|
0.045 s | 2 KBi |
#27 |
Correcto
|
0.041 s | 2 KBi |
#include <stdio.h> #include <stdlib.h> void merge(int *arr, int l, int m, int r) { int i, j, k, l_len, r_len; int *l_tmp; int *r_tmp; l_len = m - l + 1; r_len = r - m; l_tmp = (int *)malloc(sizeof(int) * l_len); r_tmp = (int *)malloc(sizeof(int) * r_len); for (i = 0; i < l_len; i++) { l_tmp[i] = arr[l + i]; } for (i = 0; i < r_len; i++) { r_tmp[i] = arr[m + i + 1]; } // Ordenamos en si a los subarreglos que se hayan formado i = 0; j = 0; k = l; while (i < l_len && j < r_len) { if (l_tmp[i] <= r_tmp[j]) { arr[k] = l_tmp[i]; i++; } else { arr[k] = r_tmp[j]; j++; } k++; } // Copiamos al arr completo los elementos restantes de ambas mitades while (i < l_len) { arr[k] = l_tmp[i]; i++; k++; } while (j < r_len) { arr[k] = r_tmp[j]; j++; k++; } free(l_tmp); free(r_tmp); } void mergeSort(int *arr, int l, int r) { if (l < r) { // Obtenemos punto medio int m = l + (r - l) / 2; // Mandamos a ordernar las mitades recursivamente mergeSort(arr, l, m); mergeSort(arr, m + 1, r); // Hacemos merge de las mitades merge(arr, l, m, r); } } int main() { int N, i, j, k; fscanf(stdin, " %d", &N); int *arr = (int *)malloc(sizeof(int) * N); for (i = 0; i < N; i++) { int num; fscanf(stdin, " %d", &arr[i]); } // Ordenamos (Cualquiera que brinde O(n log n): Merge sort, quick sort, heap sort) mergeSort(arr, 0, N - 1); // Mostramos for (i = 0; i < N; i++) { printf("%d ", arr[i]); } free(arr); }