2011-01-09 11 views
10

¿Es el tipo de radix capaz de clasificar los datos de flotación, por ejemplo, 0.5, 0.9, 1.02, etc.?Ordenamiento de radios, clasificación de datos de un flotador

+0

Me gustaría implementar la clasificación de radix reduciendo sus depósitos a 0 y 1 solo significando que convertiría cada entrada en su valor binario y luego procedería a ordenar por radix, ¿sería esta una opción para acelerar su clasificación o esto haría ¿el orden de radix es un poco más lento que antes? Gracias. – BGV

Respuesta

1

No está listo para usar, pero tiene algunas opciones. Puede discretizar los datos, por ejemplo, multiplicando por 100 y redondeando (para que tenga, para su ejemplo anterior, 5, 9 y 102). También puede agrupar los datos (agrupando números por rangos, como en 0 < x < = 1, 1 < x < = 2), y luego ordenar dentro de cada segmento.

24

Sí, es posible. Requiere un pase adicional para manejar correctamente los valores negativos. Los artículos por Pierre Terdiman y Michael Herf discuten en detalle cómo implementarlo. En resumen, convierta el flotante en un entero sin signo, ordénelos y luego conviértelos nuevamente en float (esto es obligatorio, de lo contrario los valores negativos se ordenarían incorrectamente después de los positivos).

Su método tiene la ventaja de que no introduce ningún error en sus datos (siempre que su procesador almacene el flotador de acuerdo con el estándar IEEE 754).

+0

+1 para excelentes artículos. –

+1

Aquí hay otro artículo interesante (http://seven-degrees-of-freedom.blogspot.com/2010/07/question-of-sorts.html) que compara la ordenación de radix con una versión paralela SPU de tipo de fusión. En resumen, el tipo de fusión es más complejo (la complejidad es O (n log n) contra O (n) de ordenación de radix), se puede paralelizar más fácilmente y ganar al final. –

Cuestiones relacionadas