2011-01-25 11 views
10

tengo esta matriz:clasificación int matriz con sólo 3 elementos

int [] myarray = {17, 6, 8}; 

¿Cuál es la mejor manera de solucionar esta matriz, en pseudocódigo?

Gracias!

+0

'ordenados (a) 'con mi pseudo' ordenó' la función que ordena en su lugar :) –

+0

Muchos duplicados, por ejemplo http://stackoverflow.com/questions/3319993/sorting-the-three-integers-program –

+5

Fácil: 'int [] myarray = {6, 8, 17};' :) –

Respuesta

17

creo que esto debería ser bastante rápido (orden ascendente):

if (el1 > el2) Swap(el1,el2) 
if (el2 > el3) Swap(el2,el3) 
if (el1 > el2) Swap(el1,el2) 
+5

Su clásico tipo de burbuja desenrollada :-) +1. – paxdiablo

13

Este código hace 2 o 3 comparaciones y 4 registros de memoria en el peor de los casos, en contraposición a otra respuesta (siempre 3 comparaciones y 9 registros de memoria en el peor de los casos).

if a[0] < a[1]: 
    if a[1] > a[2]: 
     if a[0] < a[2]: 
      temp = a[1] 
      a[1] = a[2] 
      a[2] = temp 
     else: 
      temp = a[0] 
      a[0] = a[2] 
      a[2] = a[1] 
      a[1] = temp 
    else: 
     # do nothing 
else: 
    if a[1] < a[2]: 
     if a[0] < a[2]: 
      temp = a[0] 
      a[0] = a[1] 
      a[1] = temp 
     else: 
      temp = a[0] 
      a[0] = a[1] 
      a[1] = a[2] 
      a[2] = temp 
    else: 
     temp = a[0] 
     a[0] = a[2] 
     a[2] = temp 
+1

Te daré +1 por eso, adamax. Aunque es feo leer, la pregunta _did_ pregunta por óptima y la tuya parece satisfacer eso :-) – paxdiablo

+0

Tu algoritmo arroja un resultado incorrecto con {2, 3, 1} matriz. – nitrocaster

+0

@nitrocaster Estoy bastante seguro de que funciona. – ionree

8

versión ligeramente más eficiente que la burbuja desenrollado tipo, no es óptimo, pero todavía bastante simple

if (el1 > el2) Swap(el1, el2) 
if (el2 > el3) { 
    Swap(el2, el3) 
    if (el1 > el2) Swap(el1, el2) 
} 
+0

No puedo creer que alguien votó por esto. Fue en -1. Acabo de subirlo y ahora está en 0. –

5

mayo this graphic muestra un árbol de decisión para la clasificación de tres elementos de ayuda: enter image description here

+0

¿De qué libro es esto? – johncip

+0

Esto es de "Algoritmos Grundlegende" (http://www14.in.tum.de/~ga/) por Volker Heun - desafortunadamente en alemán solamente. Una figura muy similar se puede encontrar en "Introducción a los algoritmos" por Cormen y otros (http://mitpress.mit.edu/books/introduction-algorithms). –

+1

Sabía que lo había visto en alguna parte ... ¿tal vez está en el libro de Sedgewick también? Pero para cualquier otra persona que se pregunte si realmente está en CLRS, en "Ordenando en tiempo lineal". ¡Gracias! – johncip

Cuestiones relacionadas