si una matriz de tamaño n tiene solo 3 valores 0, 1 y 2 (se repite cualquier cantidad de veces), ¿cuál es la mejor manera de ordenarlos? lo mejor indica complejidad considerar el espacio y el tiempo la complejidad tantosort array de tamaño n
Respuesta
Contar las ocurrencias de cada número y luego llenar la matriz con los conteos correctos, esto es O(n)
alias Clasificación de conteo: http://en.wikipedia.org/wiki/Counting_sort –
alias tipo pigeonhole, también conocido como radix sort. – falstro
@ Andreas el valor de n puede ser bastante grande, por lo que contar puede ser un poco problemático en algunos casos –
sonido es muy parecido a la bandera nacional holandesa Problema de Dijkstra.
Si necesita una solución que no utiliza el conteo, echa un vistazo a http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Flag/
solución al estilo de C no probado:
int count[3] = {0, 0, 0};
for (int i = 0; i < n; ++i)
++count[array[i]];
int pos = 0;
for (int c = 0; c < 3; ++c)
for (int i = array[c]; i; --i)
array[pos++] = c;
'unsigned' o' size_t' sería más apropiado. – GManNickG
Haskell dos forro:
count xs = Map.toList $ Map.fromListWith (+) [ (x, 1) | x <- xs ]
countingSort xs = concatMap (\(x, n) -> replicate n x) (count xs)
> countingSort [2,0,2,1,2,2,1,0,2,1]
[0,0,1,1,1,2,2,2,2,2]
- 1. Sort listview with array adapter
- 2. Sort ArrayList of Array en Java
- 3. PHP/SQL: ORDER BY or sort ($ array)?
- 4. n-dimensional Array
- 5. Diferencia entre array [n] y array []?
- 6. const boost :: array <T,N> o boost :: array <const T,N>?
- 7. Insertion Sort Error
- 8. ¿Cómo funciona Array # sort cuando se pasa un bloque?
- 9. La limitación del tamaño de .Net Array
- 10. boost zip_iterator y std :: sort
- 11. Sort lexicographically?
- 12. oracle distinct doing sort
- 13. Requisitos de espacio de merge-sort
- 14. Algoritmo de JavaScript "sort()" Función
- 15. ¿Cómo funciona Javascript's sort()?
- 16. std :: array <char, N> std :: string
- 17. Cómo migrar datos del clúster Cassandra de tamaño N a un clúster de tamaño diferente N +/- M
- 18. Array de Javascript Reverso
- 19. grupo N puntos en k grupos de igual tamaño
- 20. ¿Complejidad del tiempo para Shell sort?
- 21. Agregar o cambiar el tamaño de numpy array
- 22. php tamaño de los datos del array get
- 23. Conseguir el tamaño de un array en un objeto
- 24. Android string-array a Array
- 25. Batcher's Merge-Exchange Sort
- 26. agregación mongod sort
- 27. SQL Server Random Sort
- 28. XNA sprite sort mode
- 29. Javascript matriz doble sort
- 30. .Sort con PyMongo
lo que mejor sabe significa en este caso? – EvilTeach
Depende de lo que quiera decir con "mejor", ¿es más conveniente? mas rapido? más eficiente en términos de almacenamiento? más portátil? –