[et_pb_section fb_built=»1″ _builder_version=»3.22″][et_pb_row _builder_version=»3.25″ background_size=»initial» background_position=»top_left» background_repeat=»repeat»][et_pb_column type=»4_4″ _builder_version=»3.25″ custom_padding=»|||» custom_padding__hover=»|||»][et_pb_text _builder_version=»4.4.6″ background_size=»initial» background_position=»top_left» background_repeat=»repeat»]
Pues como el asunto dice, os voy a implementar dos funciones para ordenar un array de N elementos utilizando los métodos de ordenación de la burbuja y el Quicksort. No voy a poner todo el programa, sino necesitaría varias páginas de esta web y creo que resumiendo en funciones, es más que suficiente. Explicare entonces cual es la mecánica de ordenación con método Burbuja y con Quicksort:
Burbuja: O llamado Bubble Sort, compara cada elemento con el siguiente y cambia el valor según la condición (si quieres ordenar de mayor a menor, o de menor a mayor). Es el algoritmo de ordenación más sencillo.
QuickSort: Es un algoritmo que se basa en dividir en partes más simples tantas veces como sea necesario para poder averiguar el resultado. Es muy rápido, pero también puede ser inestable.
Para poder llamar a las funciones desde el programa principal, es tan simple como ejecutar la función con los valores adecuados, por ejemplo:
[/et_pb_text][et_pb_dmb_code_snippet title=»Burbuja» code=»dm9pZCBvcmRlbmFybWVub3IoaW50ICp1bmFycmF5LCBpbnQgbGFsb25nKSB7CiAgICAgICAgIGludCBhdXgsIGksIGo7CgogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFsb25nIC0xIDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZm9yIChqID0gaSArIDE7IGogPCBsYWxvbmcgOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmFycmF5W2ldID4gdW5hcnJheVtqXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1eCA9IHVuYXJyYXlbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hcnJheVtpXSA9IHVuYXJyYXlbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hcnJheVtqXSA9IGF1eDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQp9Cgp2b2lkIG9yZGVuYXJtYXlvcihpbnQgKnVuYXJyYXksIGludCBsYWxvbmcpIHsKICAgICAgICAgaW50IGF1eCwgaSwgajsKCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsYWxvbmcgLTEgOyBpKyspIHsKICAgICAgICAgICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IGxhbG9uZyA7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuYXJyYXlbaV0gPCB1bmFycmF5W2pdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4ID0gdW5hcnJheVtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmFycmF5W2ldID0gdW5hcnJheVtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmFycmF5W2pdID0gYXV4OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICB9Cn0=» language=»c» style=»codepen-embed» linenums=»on» usetabwidth=»on» tabwidth=»4″ _builder_version=»4.4.6″ hover_enabled=»0″]dm9pZCBvcmRlbmFybWVub3IoaW50ICp1bmFycmF5LCBpbnQgbGFsb25nKSB7CiAgICAgICAgIGludCBhdXgsIGksIGo7CgogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFsb25nIC0xIDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZm9yIChqID0gaSArIDE7IGogPCBsYWxvbmcgOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmFycmF5W2ldID4gdW5hcnJheVtqXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1eCA9IHVuYXJyYXlbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hcnJheVtpXSA9IHVuYXJyYXlbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hcnJheVtqXSA9IGF1eDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQp9Cgp2b2lkIG9yZGVuYXJtYXlvcihpbnQgKnVuYXJyYXksIGludCBsYWxvbmcpIHsKICAgICAgICAgaW50IGF1eCwgaSwgajsKCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsYWxvbmcgLTEgOyBpKyspIHsKICAgICAgICAgICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IGxhbG9uZyA7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuYXJyYXlbaV0gPCB1bmFycmF5W2pdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4ID0gdW5hcnJheVtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmFycmF5W2ldID0gdW5hcnJheVtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmFycmF5W2pdID0gYXV4OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICB9Cn0=[/et_pb_dmb_code_snippet][et_pb_dmb_code_snippet title=»QuickSort» code=»aW50IHBpdm90KGludCAqdW5hcnJheSwgaW50IGl6cSwgaW50IGRlcikKewogICAgaW50IGk7CiAgICBpbnQgcGl2b3RlLCB2YWxvcl9waXZvdGU7CiAgICBpbnQgYXV4OwoKICAgIHBpdm90ZSA9IGl6cTsKICAgIHZhbG9yX3Bpdm90ZSA9IHVuYXJyYXlbcGl2b3RlXTsKICAgIGZvciAoaT1penErMTsgaTw9ZGVyOyBpKyspewogICAgICAgIGlmICh1bmFycmF5W2ldIDwgdmFsb3JfcGl2b3RlKXsKICAgICAgICAgICAgICAgIHBpdm90ZSsrOwogICAgICAgICAgICAgICAgYXV4PXVuYXJyYXlbaV07CiAgICAgICAgICAgICAgICB1bmFycmF5W2ldPXVuYXJyYXlbcGl2b3RlXTsKICAgICAgICAgICAgICAgIHVuYXJyYXlbcGl2b3RlXT1hdXg7CgogICAgICAgIH0KICAgIH0KICAgIGF1eD11bmFycmF5W2l6cV07CiAgICB1bmFycmF5W2l6cV09dW5hcnJheVtwaXZvdGVdOwogICAgdW5hcnJheVtwaXZvdGVdPWF1eDsKICAgIHJldHVybiBwaXZvdGU7Cn0KCnZvaWQgUXVpY2tzb3J0KGludCAqdW5hcnJheSwgaW50IGl6cSwgaW50IGRlcikKewogICAgIGludCBwaXZvdGU7CiAgICAgaWYoaXpxIDwgZGVyKXsKICAgICAgICBwaXZvdGU9cGl2b3QodW5hcnJheSwgaXpxLCBkZXIpOwogICAgICAgIFF1aWNrc29ydCh1bmFycmF5LCBpenEsIHBpdm90ZS0xKTsKICAgICAgICBRdWlja3NvcnQodW5hcnJheSwgcGl2b3RlKzEsIGRlcik7CiAgICAgfQp9″ language=»c» style=»codepen-embed» linenums=»on» usetabwidth=»on» tabwidth=»4″ _builder_version=»4.4.6″ hover_enabled=»0″]aW50IHBpdm90KGludCAqdW5hcnJheSwgaW50IGl6cSwgaW50IGRlcikKewogICAgaW50IGk7CiAgICBpbnQgcGl2b3RlLCB2YWxvcl9waXZvdGU7CiAgICBpbnQgYXV4OwoKICAgIHBpdm90ZSA9IGl6cTsKICAgIHZhbG9yX3Bpdm90ZSA9IHVuYXJyYXlbcGl2b3RlXTsKICAgIGZvciAoaT1penErMTsgaTw9ZGVyOyBpKyspewogICAgICAgIGlmICh1bmFycmF5W2ldIDwgdmFsb3JfcGl2b3RlKXsKICAgICAgICAgICAgICAgIHBpdm90ZSsrOwogICAgICAgICAgICAgICAgYXV4PXVuYXJyYXlbaV07CiAgICAgICAgICAgICAgICB1bmFycmF5W2ldPXVuYXJyYXlbcGl2b3RlXTsKICAgICAgICAgICAgICAgIHVuYXJyYXlbcGl2b3RlXT1hdXg7CgogICAgICAgIH0KICAgIH0KICAgIGF1eD11bmFycmF5W2l6cV07CiAgICB1bmFycmF5W2l6cV09dW5hcnJheVtwaXZvdGVdOwogICAgdW5hcnJheVtwaXZvdGVdPWF1eDsKICAgIHJldHVybiBwaXZvdGU7Cn0KCnZvaWQgUXVpY2tzb3J0KGludCAqdW5hcnJheSwgaW50IGl6cSwgaW50IGRlcikKewogICAgIGludCBwaXZvdGU7CiAgICAgaWYoaXpxIDwgZGVyKXsKICAgICAgICBwaXZvdGU9cGl2b3QodW5hcnJheSwgaXpxLCBkZXIpOwogICAgICAgIFF1aWNrc29ydCh1bmFycmF5LCBpenEsIHBpdm90ZS0xKTsKICAgICAgICBRdWlja3NvcnQodW5hcnJheSwgcGl2b3RlKzEsIGRlcik7CiAgICAgfQp9[/et_pb_dmb_code_snippet][et_pb_dmb_code_snippet code=»aW50IG1pYXJyYXlbTl07Cm9yZGVuYXJtZW5vcihtaWFycmF5LCBOKTsKb3JkZW5hcm1heW9yKG1pYXJyYXksIE4pOwpRdWlja3NvcnQobWlhcnJheSwgMCwgTi0xKTs=» language=»c» style=»codepen-embed» linenums=»on» usetabwidth=»on» tabwidth=»4″ _builder_version=»4.4.6″]aW50IG1pYXJyYXlbTl07Cm9yZGVuYXJtZW5vcihtaWFycmF5LCBOKTsKb3JkZW5hcm1heW9yKG1pYXJyYXksIE4pOwpRdWlja3NvcnQobWlhcnJheSwgMCwgTi0xKTs=[/et_pb_dmb_code_snippet][et_pb_text _builder_version=»4.4.6″]
Donde «miarray» es un array de números enteros con una longitud N (por ejemplo 10 elementos). Evidentemente no tenemos que decir que el array debe contener números, para que se pueda ordenar.
Descargar: CÓDIGO FUENTE EJEMPLO
En el programa que os pongo para descargar, es una aplicación que tiene más opciones, e reunido en ella muchas de las funciones que ya e implementado en otras aplicaciones más pequeñas, con la aplicación podrá realizar las siguientes operaciones con el array de números enteros: inicializar, rellenar, imprimir, maximo, minimo, media, ordenación (metodo burbuja mayor-menor y menor-mayor, metodo QuickSort). Espero que sea de vuestro agrado
Como he dicho en otras ocasiones, las apliaciones en la mayoria de casos no tiene controles para los datos que se introducen por teclado. Eso sera otro apartado que comentare más adelante para que las aplicaciones sean estables y robustas.
[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]