Autor
|
Tema: duda algoritmo (Leído 1,849 veces)
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
Bueno queria saber si puedo resumir mas el algoritmo quick sort de 27 lineas para que no sea tan largo y hacerlo similar al de bogosort pero sin trampa, el codigo de quicksort me lo se de memoria el de bogosort tambien
|
|
« Última modificación: 8 Junio 2019, 23:21 pm por Beginner Web »
|
En línea
|
7w7
|
|
|
K-YreX
|
Hay infinidad de implementaciones para un mismo algoritmo por lo que puedes poner tu implementación y así es más fácil decirte si puedes simplificarlo más. La otra opción es esperar que alguien lo tenga más simplificado y te lo mande... Y no sé a qué te refieres con "pero sin trampa". He supuesto que es a no poner varias instrucciones en una línea para reducir el número de líneas, motivo por el cual no es muy bueno medir la simplificación de un código por su número de líneas.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
Serapis
|
Tal como te señala YreX-DwX, un algoritmo no se puede medir por su número de líneas. A menudo un algoritmo que te funciona muy bien y es muy escueto, le acabas añadiendo el doble de líneas y luego resulta mucho más rápido.
En general el hecho de añadir alguna que otra línea, por ejemplo al asignar valores, puede que su ejecución solo sea pocas veces, y a cambio ahorre muchas ejecuciones dentro de un bucle.
Más bien considera algoritmos de líneas breves (aunque ineficiente) como solución para problemas pequeños... Por ejemplo el ordenamiento de burbuja es el más lento, pero para ordenar pequeñas colecciones de hasta unas decenas (no más de 50 elementos) todavía planta cara a los más eficientes. Justo cuanto más cantidad de elementos deban ser ordenados tanto más importante se hace la eficiencia del algoritmo usado.
Por cierto el 'bogosort' (más bien bobo-sort), bajo mi punto de vista no es un algoritmo, de ordenamiento ni debiera aparecer por parte alguna.
Pon el código que tienes y se ve de hacerlo más eficiente...
|
|
|
En línea
|
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
lo se bebes, cuando decia sin trampa me referia justamente a eso, a no escribir todo en una sola linea de codigo, mi intencion es reducir los pasos y de esa manera hacerlo mas compacto porque todo se puede compactar tranquilamente solo que con este algoritmo no me sale void quick_sort(arreglo &a, int izq, int der) { int i, j, pivote, aux; i=izq; j=der; pivote=a[(izq+der)/2]; while(i<=j){ while(a[i]<pivote) i++; while(a[j]>pivote) j--; if(i<=j){ aux=a[i]; a[i]=a[j]; a[j]=aux; i++; j--; } } if(izq<j) quick_sort(a, izq, j); if(i<der) quick_sort(a, i, der); }
|
|
« Última modificación: 8 Junio 2019, 22:15 pm por Beginner Web »
|
En línea
|
7w7
|
|
|
K-YreX
|
Si quieres quitar líneas claro que puedes, a costa de perder legibilidad: - Las líneas 4, 5 y 6 las puedes poner junto a las declaraciones. (3 líneas menos)
- Los <if> y <while> con una sola sentencia dentro, puedes quitar las llaves. (4 líneas menos)
- Puedes cambiar un poco los incrementos. (8 líneas menos contando las 4 líneas menos anteriores)
Ganancias en eficiencia? Ninguna Pérdidas en legibilidad? Muchas Si quieres ganar un poco en eficiencia lo único que te diría es que los incrementos y decrementos los hagas en prefijo <++i> es ligeramente mejor que <i++>. Pero tampoco creas que te van a mejorar los tiempos de ordenación por hacer eso.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Python - Duda Algoritmo
Scripting
|
h0oke
|
7
|
4,996
|
30 Marzo 2010, 03:12 am
por h0oke
|
|
|
Duda Algoritmo de Ordenamiento
Programación General
|
kernel19
|
4
|
3,446
|
27 Diciembre 2010, 16:54 pm
por BgCRaCK
|
|
|
duda con algoritmo
Programación General
|
z_ane_666
|
1
|
2,745
|
5 Mayo 2011, 23:40 pm
por Valkyr
|
|
|
Duda con algoritmo facil
Ejercicios
|
NachoEx
|
2
|
3,794
|
6 Marzo 2013, 21:46 pm
por NachoEx
|
|
|
[C][?] Duda con algoritmo en C
Programación C/C++
|
doSomething()
|
4
|
2,526
|
30 Mayo 2019, 17:58 pm
por K-YreX
|
|