poemas de amor ESTRUCTURA DE DATOS: "Ordenamiento Burbuja"

jueves, 31 de diciembre de 2009

"Ordenamiento Burbuja"


El metodo de ordenamiento burbuja es bastante sencillo, consiste en evaluar pares de elementos contiguos del arreglo y si el primero es mayor que el siguiente los intercambia (los más chicos quedan abajo). Todo ésto sucede dentro de dos ciclos for que recorren el arreglo. El ciclo más interno realiza las comparaciones, y se asegura ya en la primera pasada completa que el elemento ás grande del arreglo suba a la posición más alta (ésto más adelante nos permitirá desarrollar un algorítmo mejorado del método burbuja). .


Aqui un ejemplo y su codigo:


class Main {
public static int izquierda,derecha,ultimo; //variables para ordenamiento
public static int arreglo[] = {1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153,
15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285,
1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679,
593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290,
910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439,
148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38,
538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 ,
17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286,
1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423,
1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833,
389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118,
39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443,
141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168,1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153,
15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285,
1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679,
593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290,
910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439,
148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38,
538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 ,
17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286,
1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423,
1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833,
389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118,
39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443,
141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168,1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153,
15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285,
1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679,
593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290,
910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439,
148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38,
538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 ,
17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286,
1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423,
1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833,
389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118,
39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443,
141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168,1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153,
15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285,
1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679,
593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290,
910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439,
148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38,
538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 ,
17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286,
1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423,
1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833,
389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118,
39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443,
141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168,1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153,
15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285,
1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679,
593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290,
910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439,
148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38,
538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 ,
17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286,
1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423,
1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833,
389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118,
39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443,
141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168};
public static void main(String[] args) {
izquierda = 1;
derecha = arreglo.length;
ultimo = arreglo.length-1;
do{
for(int i=arreglo.length-1;i>0;i--){
//Burbuja hacia la izquierda
//Los valores menores van a la izquierda
if (arreglo[i-1] > arreglo[i]){
int aux = arreglo[i]; // variable auxiliar para poder hacer intercambio de
arreglo[i] = arreglo[i-1]; // posicion
arreglo[i-1] = aux;
ultimo = i;
}
}
izquierda = ultimo+1;
for(int j=1;j arreglo[j]){
int aux = arreglo[j];
arreglo[j] = arreglo[j-1];
arreglo[j-1] = aux;
ultimo = j;
}
}
derecha = ultimo-1;
}while(derecha >= izquierda);
for(int i=0;i







La siguiente pantalla nos muestra el mismo programa pero evaluado con 1000 datos flotantes y enseguida su respectivo codigo





class Main { public static int izquierda,derecha,ultimo; //variables para ordenamiento

public static int arreglo[] = {1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153, 15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285, 1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679, 593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290, 910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439, 148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38, 538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 , 17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286, 1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423, 1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833, 389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118, 39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443, 141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168,1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153, 15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285, 1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679, 593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290, 910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439, 148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38, 538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 , 17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286, 1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423, 1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833, 389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118, 39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443, 141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168,1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153, 15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285, 1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679, 593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290, 910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439, 148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38, 538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 , 17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286, 1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423, 1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833, 389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118, 39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443, 141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168,1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153, 15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285, 1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679, 593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290, 910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439, 148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38, 538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 , 17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286, 1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423, 1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833, 389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118, 39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443, 141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168,1212, 117, 839, 1382, 741, 1357, 1293, 899, 1202, 1227, 982, 1153, 15, 831 ,1202, 287, 417, 329, 674, 1375, 142, 1368, 1395, 1317, 810, 471, 288, 117, 1285, 1115, 572, 135, 494, 715, 581, 1225, 1221 ,85 ,119, 220, 140, 182, 1260, 129, 517, 1253, 679, 593 ,1424, 700, 361, 435, 349, 1496, 1156, 1207, 1561, 425, 529, 88, 1136, 163, 975, 1290, 910, 913, 504, 654, 1124, 204, 532 ,1317, 272, 423, 629, 1216, 747, 637, 1435, 847, 927, 1426, 1452, 1439, 148, 1516, 684, 530, 499, 1168, 1525, 1172, 1152, 601, 1549, 1313, 54, 321, 899, 1533, 318, 522, 38, 538, 612, 917, 1521, 344, 808, 174, 268, 672, 577, 1189, 858, 177, 686, 873, 1176, 1381, 1251 , 17, 501, 723, 307, 235, 834, 863, 137,3, 599, 218, 799, 1281, 389, 767, 1451 ,1184, 187, 12, 1286, 1266, 1124, 899, 742, 859, 164, 209 ,633, 188, 689, 1225, 71, 497, 587, 993, 67, 986, 677 ,53 ,1423, 1398, 139, 53, 1524, 877, 894, 990, 298, 922, 886, 1468, 568, 911, 238, 490, 1257, 262, 387, 833, 389, 821 ,124, 277, 200, 957, 1111 ,1283, 1359, 1447, 602, 3, 59, 860, 109, 1102, 867 ,1338, 183, 1118, 39, 66, 662, 553, 981, 1173, 1231, 56, 811, 1117 ,240, 713, 1490, 279, 1391, 921 ,1044 ,1259, 383, 443, 141, 1222 ,372, 1484, 2375,45, 1482, 1097, 348, 1256, 140, 705 ,1294 ,273, 650, 797, 411, 1520, 15, 1168};

public static void main(String[] args) {

izquierda = 1;

derecha = arreglo.length;

ultimo = arreglo.length-1;

do{ for(int i=arreglo.length-1;i>0;i--){

//Burbuja hacia la izquierda //

Los valores menores van a la izquierda

if (arreglo[i-1] > arreglo[i]){ int aux = arreglo[i];

// variable auxiliar para poder hacer intercambio de

arreglo[i] = arreglo[i-1]; // posicion

arreglo[i-1] = aux; ultimo = i; } }

izquierda = ultimo+1;

for(int j=1;jif(arreglo[j-1] > arreglo[j]){

int aux = arreglo[j]; arreglo[j] = arreglo[j-1];

arreglo[j-1] = aux; ultimo = j;

} } derecha = ultimo-1; }

while(derecha >= izquierda);

for(int i=0;iSystem.out.println(arreglo[i]); } } }

No hay comentarios:

Publicar un comentario