El ordenamiento de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas «burbujas». También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo uno de los más sencillos de implementar.
Descripción
Una manera simple de expresar el ordenamiento de burbuja en pseudocódigo es la siguiente:
Este algoritmo realiza el ordenamiento o reordenamiento de una lista a de n valores, en este caso de n términos numerados del 0 al n-1; consta de dos bucles anidados, uno con el índice i, que da un tamaño menor al recorrido de la burbuja en sentido inverso de 2 a n, y un segundo bucle con el índice j, con un recorrido desde 0 hasta n-i, para cada iteración del primer bucle, que indica el lugar de la burbuja.
La burbuja son dos términos de la lista seguidos, j y j+1, que se comparan: si el primero es mayor que el segundo sus valores se intercambian.
Esta comparación se repite en el centro de los dos bucles, dando lugar a una lista ordenada. Puede verse que el número de repeticiones solo depende de n y no del orden de los términos, esto es, si pasamos al algoritmo una lista ya ordenada, realizará todas las comparaciones exactamente igual que para una lista no ordenada. Esta es una característica de este algoritmo. Luego veremos una variante que evita este inconveniente.
Para comprender el funcionamiento, veamos un ejemplo sencillo:
Tenemos una lista de números que hay que ordenar:
Podemos ver que la lista que tiene cinco términos, luego:
El índice i hará un recorrido de 2 hasta n:
que en este caso será de 2 a 5. Para cada uno de los valores de i, j tomará sucesivamente los valores de 0 hasta n-i:
Para cada valor de j, obtenido en ese orden, se compara el valor del índice j con el siguiente:
Si el término j es mayor que el término j+1, los valores se permutan, en caso contrario se continúa con la iteración.
Para el caso del ejemplo, tenemos que:
Para la primera iteración del primer bucle:
y j tomará los valores de 0 hasta 3:
Cuando j vale 0, se comparan , el 55 y el 86, dado que 55 < 86, no se permuta el orden.
Ahora j vale 1 y se comparan el 86 y el 48. Como 86 > 48, se permutan, dando lugar a una nueva lista.
Se repite el proceso hasta que j valga 3, dando lugar a una lista parcialmente ordenada. Podemos ver que el término de mayor valor está en el lugar más alto.
Ahora i vale 3, y j hará un recorrido de 0 a 2.
Primero j vale 0, se comparan , el 55 y el 48. Como 55 > 48 se permutan dando lugar a la nueva lista.
Para j = 1 se compara el 55 con el 16 y se cambian de orden.
Para j = 2 se compara el 55 y el 82 y se dejan como están, finalizando el bucle con una lista mejor ordenada. Puede verse que los dos valores más altos ya ocupan su lugar. No se ha realizado ninguna comparación con el término cuarto, dado que ya se sabe que después del primer ciclo es el mayor de la lista.
El algoritmo consiste en comparaciones sucesivas de dos términos consecutivos ascendiendo de abajo arriba en cada iteración, como la ascensión de las burbujas de aire en el agua, de ahí el nombre del procedimiento. En la primera iteración el recorrido ha sido completo, en el segundo se ha dejado él último término, al tener ya el mayor de los valores, en los sucesivos sé ira dejando de realizar las últimas comparaciones, como se puede ver.
Ahora ya i vale 4 y j recorrerá los valores de 0 a 1.
Cuando j vale 0, se comparan , esto es, el 48 y el 16. Dado que 48 es mayor que 16 se permutan los valores, dando lugar a una lista algo más ordenada que la anterior. Desde esta nueva ordenación, j pasa a valer 1, con lo que se comparan los términos el 48 y el 55 que quedan en el mismo orden.
En este caso la burbuja ha ascendido menos que en los casos anteriores, y la lista está ya ordenada, pero el algoritmo tendrá que completarse, realizando una última iteración.
Hay que tener en cuenta que el bucle realiza un número fijo de repeticiones y para finalizar tendrán que completarse, aun en el caso extremo, de que la lista estuviera previamente ordenada.
Por último i vale 5 y j solo puede vale 0, con lo que sólo se realizará una comparación de el 16 y el 48, que ya están ordenados y se dejan igual.
Los bucles finalizan y también el procedimiento, dejando la lista ordenada.
Una variante que finaliza en caso de que la lista esté ordenada, puede ser la siguiente: como en el ejemplo anterior, empleando un centinela ordenado, que detecta que no se ha modificado la lista en un recorrido de la burbuja, y que por tanto la lista ya está ordenada, finalizando inmediatamente.
Al algoritmo de la burbuja, para ordenar un arreglo de n términos, tiene que realizar siempre el mismo número de comparaciones:
Esto es, el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos:
Por lo tanto la cota ajustada asintótica del número de comparaciones pertenece al orden de n cuadrado.
El número de intercambios i(n), que hay que realizar depende del orden de los términos y podemos diferenciar, el caso mejor, si el arreglo está previamente ordenado, y el caso peor, si el arreglo está ordenado en orden inverso:
Por lo que no se puede determinar una cota ajustada asintótica del número de intercambios, dado que éste dependerá del orden del arreglo en cuestión.
Si pasamos al algoritmo un arreglo ordenado en orden inverso realizará un número de comparaciones:
Como ya hemos dicho anteriormente, y tendrá que realizar un número igual de intercambios entre los términos del arreglo, dado que en cada comparación los términos estarán desordenados, y se realizará el intercambio.
Por lo tanto en el caso más desfavorable tanto el número de comparaciones como el de intercambios coinciden:
El número de comparaciones o de intercambios en el caso más desfavorable pertenece al orden de n cuadrado.
En el caso óptimo, el más favorable, es la ordenación de un arreglo ya ordenado. En este caso el número de comparaciones será el mismo que en cualquier otro caso:
La cota inferior asintótica del número de comparaciones pertenece al orden de n cuadrado, como en los demás casos, pero en todas las comparaciones el orden es el correcto y por tanto no se realiza ningún intercambio:
Por lo tanto el coste de intercambios no depende de n, y es constante:
El ordenamiento de burbuja tiene una complejidad Ω(n²) igual que ordenamiento por selección. Cuando una lista ya está ordenada, a diferencia del ordenamiento por inserción que pasará por la lista una vez y encontrará que no hay necesidad de intercambiar las posiciones de los elementos, el método de ordenación por burbuja está forzado a pasar por dichas comparaciones, lo que hace que su complejidad sea cuadrática en el mejor de los casos. Esto lo cataloga como uno de los algoritmos de ordenación más ineficientes que existen, aunque para muchos programadores sea el más sencillo de implementar.
Conejos y tortugas
La posición de los elementos en el ordenamiento de burbuja juegan un papel muy importante en la determinación del rendimiento. Los elementos mayores al principio de la lista son rápidamente movidos hacia abajo, mientras los elementos menores en el fondo de la lista se mueven a la parte superior muy lentamente. Esto llevó a nombrar estos elementos conejos y tortugas, respectivamente.
Se han realizado varios esfuerzos para eliminar las tortugas y mejorar la velocidad del ordenamiento de burbuja, la cual será más redonda que nunca. El Ordenamiento por sacudida es un buen ejemplo, aunque aún mantiene, en el peor de los casos, una complejidad O (n2). El ordenamiento por combinación compara los elementos primero en pedazos grandes de la lista, moviendo tortugas extremadamente rápido, antes de proceder a pedazos cada vez más pequeños para alisar la lista. Su velocidad promedio es comparable a algoritmos rápidos (y complejos) como el ordenamiento rápido.
En la práctica
A pesar de que el ordenamiento de burbuja es uno de los algoritmos más sencillos de implementar, su orden O (n2) lo hace muy ineficiente para usar en listas que tengan más que un número reducido de elementos. Incluso entre los algoritmos de ordenamiento de orden O (n2), otros procedimientos como el ordenamiento por inserción son considerados más eficientes.
Dada su simplicidad, el ordenamiento de burbuja es utilizado para introducir el concepto de algoritmo de ordenamiento para estudiantes de ciencias de la computación. A pesar de esto, algunos investigadores como Owen Astrachan han criticado su popularidad en la enseñanza de ciencias de la computación, llegando a recomendar su eliminación de los planes de estudio.[1]
Sumado a esto, Jargon File, un libro ampliamente citado en la cultura hacker, lo denomina «el mal algoritmo genérico», y Donald Knuth, uno de los mayores expertos en ciencias de la computación, afirma que el ordenamiento de burbuja «no parece tener nada para recomendar su uso, a excepción de un nombre pegadizo y el hecho de que conlleva a problemas teóricos interesantes».[2]
El ordenamiento de burbuja es asintóticamente equivalente en tiempos de ejecución con el ordenamiento por inserción en el peor de los casos, pero ambos algoritmos difieren principalmente en la cantidad de intercambios que son necesarios. Resultados experimentales como los descubiertos por Astrachan han demostrado que el ordenamiento por inserción funciona considerablemente mejor incluso con listas aleatorias. Por esta razón, muchos libros de algoritmos modernos evitan usar el ordenamiento de burbuja, reemplazándolo por el ordenamiento por inserción.
El ordenamiento de burbuja interactúa vagamente con el hardware de las CPU modernas. Requiere al menos el doble de escrituras que el ordenamiento por inserción, el doble de pérdidas de caché, y asintóticamente más predicción de saltos. Varios experimentos de ordenamiento de cadenas en Java hechos por Astrachan muestran que el ordenamiento de burbuja es 5 veces más lento que el ordenamiento por inserción, y 40% más lento que el ordenamiento por selección.[1]
Algoritmo
.
Ejemplo paso a paso
Tomemos como ejemplo los números: "9 6 5 8 2 1", que serán ordenados de menor a mayor valor usando el método burbuja.
Los elementos siguientes resaltados están siendo comparados.
Primera vuelta: ( 96 5 8 2 1 ) ( 69 5 8 2 1 ), el algoritmo compara los primeros dos elementos y los cambia porque 9 > 6 ( 6 95 8 2 1 ) ( 6 59 8 2 1 ) ( 6 5 98 2 1 ) ( 6 5 89 2 1 ) ( 6 5 8 92 1 ) ( 6 5 8 29 1 ) ( 6 5 8 2 91 ) ( 6 5 8 2 19 )
Segunda vuelta: ( 65 8 2 1 9 ) ( 56 8 2 1 9 ) ( 5 68 2 1 9 ) ( 5 68 2 1 9 ), como estos elementos ya están en orden, el algoritmo no hace cambios. ( 5 6 82 1 9 ) ( 5 6 28 1 9 ) ( 5 6 2 81 9 ) ( 5 6 2 18 9 ) ( 5 6 2 1 89 ) ( 5 6 2 1 89 )
Comb sort es un algoritmo de ordenamiento relativamente sencillo basado en bubble sort y diseñado originalmente por Włodzimierz Dobosiewicz en 1980.[3] Más tarde fue redescubierto y popularizado por Stephen Lacey y Richard Box con un artículo de Byte Magazine publicado en abril de 1991. La idea básica es eliminar las tortugas, o valores pequeños cerca del final de la lista, ya que en una ordenación por burbujas éstos ralentizan enormemente la ordenación. (Conejos, valores grandes al principio de la lista, no suponen un problema en la ordenación por burbujas) Esto se consigue intercambiando inicialmente los elementos que están a cierta distancia unos de otros en la matriz, en lugar de intercambiar sólo los elementos si son adyacentes, y luego reduciendo la distancia elegida hasta que funciona como una ordenación por burbujas normal. Por lo tanto, si Shellsort se puede considerar como una versión generalizada de la ordenación por inserción que intercambia elementos espaciados a cierta distancia unos de otros, la ordenación por peine se puede considerar como la misma generalización aplicada a la ordenación por burbujas.
Basilika Perawan Montserrat, Hormigueros Ini adalah daftar basilika di Puerto Riko. Katolik Daftar basilika Gereja Katolik di Puerto Riko[1]: Basilika Perawan Montserrat, Hormigueros Basilika Katedral Metropolitan Santo Yohanes Pembaptis Puerto Riko Lihat juga Gereja Katolik Roma Gereja Katolik di Puerto Riko Daftar katedral di Puerto Riko Daftar basilika Referensi ^ Basilika di seluruh dunia lbsDaftar basilika di Amerika UtaraNegaraberdaulat Amerika Serikat Antigua dan Barbuda Bahama...
Pemandangan kota Burbank. Burbank adalah sebuah kota yang terletak di Amerika Serikat. Pada tahun 2004, kota ini memiliki populasi sebesar 105.400 jiwa. Burbank terletak di region timur lembah San Fernando, utara dari kota Los Angeles. Kota ini adalah ibu kota media Dunia karena banyak perusahaan media berbasis atau memiliki fasilitas produksi siknifikan di Burbank, termasuk NBC Universal, The Walt Disney Company, dan Warner Bros. Entertainment. Kota kembar Incheon, Korea Selatan Ōta, Jepang...
Skyscraper in Sandton, South Africa The LeonardoThe tower in 2020Alternative names75 on MaudeRecord heightTallest in Africa from 2019 to 2021[I]Preceded byCarlton CentreSurpassed byIconic TowerGeneral informationStatusCompletedTypeMixed-useLocationSandton, Johannesburg, South AfricaCoordinates26°6′15.2″S 28°3′19.96″E / 26.104222°S 28.0555444°E / -26.104222; 28.0555444Groundbreaking17 November 2015Construction started2015Completed2019; 5 years a...
Seagoing watercraft Landing Craft, Vehicle, Personnel (LCVP) used in the Invasion of Normandy in World War IIDutch landing craftFinnish Navy Jehu U707 landing craftThe Soviet-built PTS-M is an unarmoured, fully tracked landing craft that was designed to transport troops or equipment inland. Landing craft are small and medium seagoing watercraft, such as boats and barges, used to convey a landing force (infantry and vehicles) from the sea to the shore during an amphibious assault. The term exc...
Proposals for concerted operation among the powers at war with the Pyratical states of Barbary was the title of an identic note written by Thomas Jefferson in 1786, when he was the American ambassador to France. It proposed an intergovernmental military alliance for purposes of instituting a naval blockade of the Ottoman Regency of Algiers, which allowed the Barbary pirates to attack ships. The alliance was opposed by Congress and was never implemented. Background Pirates operating from North...
Chemical compound FlucindoleClinical dataRoutes ofadministrationOralATC codenoneLegal statusLegal status In general: uncontrolled Identifiers IUPAC name 6,8-Difluoro-N,N-dimethyl-2,3,4,9-tetrishydro-1H-carbazol-3-amine CAS Number40594-09-0PubChem CID38531ChemSpider35315 YUNII5CYU0D0S8MKEGGD02658 YChEMBLChEMBL1882682Chemical and physical dataFormulaC14H16F2N2Molar mass250.293 g·mol−13D model (JSmol)Interactive image SMILES CN(C)C1CCC2=C(C1)C3=CC(=CC(=C3N2)F)F InChI InChI...
Large caliber rifle Solothurn S-18/1100 20 mm Anti-Tank Rifle A 20 mm Solothurn S-18/1100 AA-Mount at the Museum Altes Zeughaus Solothurn, Switzerland.TypeLarge caliber rifleAnti-tank rifleAnti-aircraft gunPlace of originSwitzerlandService historyUsed bySwitzerlandHungaryItalyNazi GermanyThe NetherlandsWarsWorld War IIProduction historyProduced1942—early 1943 [1]VariantsSolothurn S-18/100Solothurn S-18/1000SpecificationsMass54.7 kg (121 lb)Length2.1 m (...
The World Monuments Watch is a flagship advocacy program of the New York–based private non-profit organization World Monuments Fund (WMF) and American Express aimed at identifying and preserving the world’s most important endangered cultural landmarks.[1] It targets selected sites for immediate action, to call attention to the need for innovative approaches to protect threatened sites throughout the world.[1] Selection process Every two years, the program publishes a selec...
Pour les articles homonymes, voir Mason et James Mason (homonymie). James Mason James Mason en 1964, dans La Chute de l'Empire romain. Données clés Nom de naissance James Neville Mason Naissance 15 mai 1909Huddersfield, Yorkshire, Angleterre, (Royaume-Uni) Nationalité Britannique Décès 27 juillet 1984 (à 75 ans)Lausanne (Suisse) Profession Acteur Films notables Pandora Le Renard du désertJules CésarVingt mille lieues sous les mers Une étoile est née Voyage au centre de la Terr...
Questa voce sull'argomento Emilia-Romagna è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Unione Terre d'Acquaunione di comuniLocalizzazioneStato Italia Regione Emilia-Romagna Città metropolitana Bologna AmministrazioneCapoluogoSan Giovanni in Persiceto PresidenteLorenzo Pellegatti Data di istituzioneGennaio 2012 TerritorioCoordinatedel capoluogo44°38′27″N 11°11′06″E / &...
Officer of the Swedish Army Carl Henrik WrangelCarl Henrik WrangelBorn28 January 1681 (1681-01-28)Hapsal, EstoniaDied23 March 1755 (1755-03-24) (aged 74)Halmstad in Halland, SwedenOccupationField marshal of Sweden Sperlingsholm at Halmstad in Halland, Sweden Carl Henrik Wrangel, friherre Wrangel af Adinal (28 January 1681 – 23 March 1755) was an officer of the Swedish Army, attaining the rank of Field Marshal. Biography He was born in Haapsalu in Swedish Estonia as the son of...
Course in an English formal meal For other uses, see Savory. Angels on horseback Welsh rarebit A savoury is the final course of a traditional English formal meal, following the sweet pudding or dessert course. The savoury is designed to clear the palate before the port, whisky or other digestif is served. It generally consists of rich, highly spiced or salty elements. While the popularity of savouries has waned since their height during Victorian times, there has recently been a renewed inter...
هذه المقالة عن المجموعة العرقية الأتراك وليس عن من يحملون جنسية الجمهورية التركية أتراكTürkler (بالتركية) التعداد الكليالتعداد 70~83 مليون نسمةمناطق الوجود المميزةالبلد القائمة ... تركياألمانياسورياالعراقبلغارياالولايات المتحدةفرنساالمملكة المتحدةهولنداالنمساأسترالي�...
Hat manufacturer in Stockport, England Battersby's Hat Works as it appeared in 2009. Battersby Hats was the trading name of Battersby & Co, a hat manufacturer of Stockport, England. The firm once had a capacity of 12,000 hats per week but it declined in the second half of the twentieth century and merged with other hat manufacturers in 1966 before hat production ceased altogether in 1997. History Battersby's Hat Factory in Offerton, Stockport, first appeared on Ordnance Survey maps in 189...
Marble sculpture in Washington, D.C. Progress of Civilization PedimentArtistThomas CrawfordYear1863MediumMarbleDimensions366 cm × 1829 cm (144 in × 720 in)LocationWashington D.C. The Progress of Civilization is a marble pediment above the entrance to the Senate wing of the United States Capitol building designed by the sculptor Thomas Crawford. An allegorical personification of America stands at the center of the pediment. To her right, a white wood...
Questa voce o sezione sull'argomento voci comuni non cita le fonti necessarie o quelle presenti sono insufficienti. Commento: Necessita ancora di fonti precise, soprattutto per quanto riguarda la storia. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Segui i suggerimenti del progetto di riferimento. Corpo nazionale dei vigili del fuocoStemma del Corpo nazionale dei vigili del fuocoDescrizione generaleAttivo27 febbraio ...
الدول المشاركة في القمم. قمم الفرنكوفونية هي لقاءات رؤساء دول البلدان العضوة في المنظمة الدولية للفرانكوفونية. تقام هذه القمم منذ سنة 1986 كل سنتين. أثناء هذه القمم، يقوم رؤساء الدول أو الحكومات بالتحدث والنقاش في السياسة الدولية، والاقتصاد الدولي، التعاون بين الناطقين بال...
Ini adalah nama Tionghoa-Indonesia, marganya adalah Chandrawinata (曾) Nadine ChandrawinataLahir8 Mei 1984 (umur 40)Hannover, JermanAlmamaterInstitut Komunikasi dan Bisnis LSPR[1]PekerjaanPembawa acara televisiaktrismodelTahun aktif2005—sekarangSuami/istriDimas Anggara (m. 2018)Anak2Keluarga Marcel Chandrawinata (adik) Mischa Chandrawinata (adik) GelarPuteri Indonesia DKI Jakarta 5 2005Puteri Indonesia 2005Pemenang kontes kecantikanKompetisi...
يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (ديسمبر 2018) ابن أبي رمثة التميمي معلومات شخصية الإقامة شبه الجزيرة العربية العرق العرب الديانة الإسلام الحياة العمل...