Luego de de esta prolongada recopilación de datos resolvimos esta contratiempo que tienen muchos de nuestros lectores. Te brindamos la solución y nuestro deseo es que sea de mucha ayuda.
Ejemplo: el número de intercambios necesarios en el ordenamiento por selección
#include usingnamespace std;typedeflonglong ll;
ll a[111111], tmp[111111], ans;voidmerge_sort(ll a[], ll b[], ll lo, ll hi)
ll i, j, k;if(lo >= hi)return;
ll mid =(lo + hi)/2;merge_sort(a, b, lo, mid);merge_sort(a, b, mid +1, hi);
i = lo;
j = mid +1;for(k = lo; k <= hi; k++)if(j > hi)
b[k]= a[i++];elseif(i > mid)
b[k]= a[j++];elseif(a[i]<= a[j])
b[k]= a[i++];else
b[k]= a[j++];
ans += mid - i +1;for(i = lo; i <= hi; i++)
a[i]= b[i];intmain(void)
ll t;scanf("%lld",&t);while(t--)
ll n, i;scanf("%lld",&n);for(i =1; i <= n; i++)scanf("%lld",&a[i]);
ans =0;merge_sort(a, tmp,1, n);printf("%lldn", ans);return0;
Más adelante puedes encontrar las acotaciones de otros desarrolladores, tú también puedes insertar el tuyo si lo crees conveniente.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)