4 votos

Sobre la separación en una lengua menor de array

Esto es parte de una programación y, en parte, una combinatoria pregunta.

Estoy trabajando en un idioma que, lamentablemente, no admite la matriz de estructuras. Me he encontrado con un problema que tengo que ordenar mis variables en orden creciente.

Ya que el lenguaje tiene funciones para el mínimo y el máximo de dos entradas (pero el idioma no me permite nido de ellos, por ejemplo min(a, min(b, c)) no está permitida), pensé que esto podría ser un camino hacia mi problema.

Si, por ejemplo, yo tengo dos variables$a$$b$, sólo necesito una variable temporal, de modo que $a$ termina siendo inferior o igual a $b$:

t = min(a, b);
b = max(a, b);
a = t;

para las tres variables $a,b,c$, la situación es un poco más complicado, pero sólo una variable temporal es suficiente para que $a \leq b \leq c$:

a = min(a, b);
t = max(a, b);
c = max(t, c);
t = min(t, c);
b = max(a, t);
a = min(a, t);

No tener un fuerte combinatoria de fondo, sin embargo, no sé cómo generalizar las anteriores construcciones si he a $n$ variables en general. En particular, hay una manera de averiguar cómo muchas variables temporales que tendría que ordenar $n$ variables, y para averiguar cuál es el número mínimo de asignación de instrucciones necesarias para la clasificación?

Gracias de antemano!

2voto

lowglider Puntos 562

Quisiera ampliar la respuesta de Rahul y tenga en cuenta que, dado que el número de elementos que vas a ordenar presumiblemente es fijo y bastante pequeña, usted puede tomar el esfuerzo adicional para buscar una óptima (o casi óptima) clasificación de la red para ese número de artículos.

2voto

theog Puntos 585

Muchos algoritmos de ordenación de trabajo mediante la realización de una secuencia de intercambios, por lo que necesita sólo una variable adicional para implementar cualquier % fijo $n$. Lo que está haciendo efectivamente es desenrollar el bucle entero algoritmo en una secuencia de asignaciones condicionales.

El número de asignaciones será tres veces el número de swaps, y creo que el número exacto dependerá del algoritmo de clasificación. Va a ser del orden de $n \log n$, sin embargo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X