¿Cómo se puede demostrar o ilustrar que la rápida fusión de un algoritmo de clasificación es inestable?

Cheny:

Un problema me desconcertó cuando leí problema 2.2.10 del capítulo 2 de Algoritmos, 4ª Edición. El libro dice que los resultados del algoritmo de fusión rápida son inestables y no puedo encontrar evidencia de that.Help mí, gracias!

public static void sort(Comparable[] a, int lo, int hi){
    if hi <= lo {
    return;
    }
    int mid = lo + (hi - lo) / 2;
    sort(a, lo, mid);
    sort(a, mid+1, hi);
    merge(a, lo, mid, hi);
}

// Why is the result of this sort not stable
private static void merge(Comparable[] a, int lo, int mid, int hi) { 
   for (int i = lo; i <= mid; i++)
      aux[i] = a[i]; 

   for (int j = mid+1; j <= hi; j++)
      aux[j] = a[hi-j+mid+1];

   int i = lo, j = hi; 
   for (int k = lo; k <= hi; k++) 
      if (less(aux[j], aux[i])) a[k] = aux[j--];
      else                      a[k] = aux[i++];
}

No puedo encontrar que los resultados sean inestables, ¿cómo podría llegar a eso?

chqrlie:

Para demostrar la inestabilidad del algoritmo, un solo contraejemplo es suficiente: le permite tener en cuenta las medidas adoptadas para ordenar una matriz de 4 elementos A B C Dque comparan iguales para el lesspredicado.

  • sort(a, 0, 3) recursivamente en 2 subconjuntos:
  • sort(a, 0, 1) que recursivamente de nuevo
  • sort(a, 0, 0) que vuelve inmediatamente
  • sort(a, 1, 1) que vuelve inmediatamente
  • merge(a, 0, 0, 1) no cambia el orden de A B
  • sort(a, 2, 3) recursivamente en el cual
  • sort(a, 2, 2) que vuelve inmediatamente
  • sort(a, 3, 3) que vuelve inmediatamente
  • merge(a, 2, 2, 3) no cambia el orden de C D
  • merge(a, 0, 1, 3)copia los artículos A B C Den tel orden A B D C, a continuación, todas las comparaciones en el bucle de combinación se evalúan como falso, por lo tanto, los elementos copiados de nuevo en aestán en el mismo orden, copiado de t[i++]: A B D C, lo que demuestra la inestabilidad de la algoritmo de clasificación, es decir: el orden relativo de los elementos se compara la igualdad no se conserva.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=227685&siteId=1
Recomendado
Clasificación