Beruflich Dokumente
Kultur Dokumente
function bubble_sort($array){
$count = count($array);
if ($count <= 0) return false;
for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j=$j-1){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
Entonces:
Dado un vector a1, a2, a3, ... an
1) Comparar a1 con a2 e intercambiarlos si a1>a2 (o a12)
2) Seguir hasta que todo se haya comparado an-1 con an
3) Repetir el proceso anterior n-1 veces
Algoritmo: Complejidad
aux=vec[j]; T(1)
vec[j]=vec[j+1]; T(1)
vec[j+1]=aux;} T(1)
}
}
Ir comparando desde la casilla 0 numero tras número hasta encontrar uno mayor,
si este es realmente el mayor de todo el vector se llevará hasta la última casilla,
si no es así, será reemplazado por uno mayor que él.
Este procedimiento seguirá así hasta que halla ordenado todas las casillas del
vector.
Una de las deficiencias del algoritmo es que ya cuando a ordenado parte del
vector vuelve a compararlo cuando esto ya no es necesario.
Ejemplo:
Vector
Variables
pos 0 1 2 3 4 5 6 7
i j a[j] a[j+1] inicio 44 55 12 42 94 18 6 67
0 1 55 12 cambio 44 12 55 42 94 18 6 67
0 2 55 42 cambio 44 12 42 55 94 18 6 67
0 4 94 18 cambio 44 12 42 55 18 94 6 67
0 5 94 6 cambio 44 12 42 55 18 6 94 67
0 6 94 67 cambio 44 12 42 55 18 6 67 94
1 0 44 12 cambio 12 44 42 55 18 6 67 94
1 1 44 42 cambio 12 42 44 55 18 6 67 94
1 3 55 18 cambio 2 42 44 18 55 6 67 94
1 4 55 6 cambio 12 42 44 18 6 55 67 94
2 2 44 18 cambio 12 42 18 44 6 55 67 94
2 3 44 6 cambio 12 42 18 6 44 55 67 94
3 1 42 18 cambio 12 18 42 6 44 55 67 94
3 2 42 6 cambio 12 18 6 42 44 55 67 94
4 1 18 6 cambio 12 6 18 42 44 55 67 94
5 0 12 6 ordenado 6 12 18 42 44 55 67 94
void CordenamientoburbujaDlg::OnBnClickedButton1()
int vector[TAMANIO]={4,5,3,9,2,3,1,4,8,6};
int pasadas,elemento,almacena;
UpdateData(TRUE);
m_a1=vector[0];
m_a2=vector[1];
m_a3=vector[2];
m_a4=vector[3];
m_a5=vector[4];
m_a6=vector[5];
m_a7=vector[6];
m_a8=vector[7];
m_a9=vector[8];
m_a10=vector[9];
UpdateData(FALSE);
for (pasadas=1;pasadas<TAMANIO;pasadas++){
for(elemento=0;elemento<TAMANIO-1;elemento++){
if(vector[elemento]>vector[elemento+1]){
almacena=vector[elemento];
vector[elemento]=vector[elemento+1];//Declaración destructiva.
vector[elemento+1]=almacena;
UpdateData(TRUE);
m_b1=vector[0];
m_b2=vector[1];
m_b3=vector[2];
m_b4=vector[3];
m_b5=vector[4];
m_b6=vector[5];
m_b7=vector[6];
m_b8=vector[7];
m_b9=vector[8];
m_b10=vector[9];
UpdateData(FALSE);
void CordenamientoburbujaDlg::OnBnClickedButton2()
#define TAMANIO 10
int vector[TAMANIO]={4,5,3,9,2,3,1,4,8,6};
int pasadas,elemento,almacena;
UpdateData(TRUE);
m_a1=vector[0];
m_a2=vector[1];
m_a3=vector[2];
m_a4=vector[3];
m_a5=vector[4];
m_a6=vector[5];
m_a7=vector[6];
m_a8=vector[7];
m_a9=vector[8];
m_a10=vector[9];
UpdateData(FALSE);
for (pasadas=1;pasadas<TAMANIO/2;pasadas++){
for(elemento=0;elemento<TAMANIO-1;elemento++){
if(vector[elemento]>vector[elemento+1]){
almacena=vector[elemento];
vector[elemento]=vector[elemento+1];
vector[elemento+1]=almacena;
if(vector[TAMANIO-(elemento+1)]<vector[TAMANIO-(elemento+2)]){
almacena=vector[TAMANIO-(elemento+1)];
vector[TAMANIO-(elemento+1)]=vector[TAMANIO-(elemento+2)];
vector[TAMANIO-(elemento+2)]=almacena;
UpdateData(TRUE);
m_b1=vector[0];
m_b2=vector[1];
m_b3=vector[2];
m_b4=vector[3];
m_b5=vector[4];
m_b6=vector[5];
m_b7=vector[6];
m_b8=vector[7];
m_b9=vector[8];
m_b10=vector[9];
UpdateData(FALSE);
void CordenamientoburbujaDlg::OnBnClickedButton3()
#define TAMANIO 11
int vector[TAMANIO]={4,5,3,9,2,3,1,4,8,6};
int pasadas,elemento,menor,medio,mayor;
UpdateData(TRUE);
m_a1=vector[0];
m_a2=vector[1];
m_a3=vector[2];
m_a4=vector[3];
m_a5=vector[4];
m_a6=vector[5];
m_a7=vector[6];
m_a8=vector[7];
m_a9=vector[8];
m_a10=vector[9];
UpdateData(FALSE);
for(pasadas=1;pasadas<TAMANIO/2;pasadas++){
for(elemento=0;elemento<(TAMANIO-1)-(pasadas*2);elemento++){
if((vector[elemento]<vector[elemento+1]) &&
(vector[elemento]<vector[elemento+2])){//Si el primer número es el mayor de los 3.
menor=vector[elemento];
if(vector[elemento+1]<vector[elemento+2]){
medio=vector[elemento+1];
mayor=vector[elemento+2];
else{
medio=vector[elemento+2];
mayor=vector[elemento+1];
if((vector[elemento+1]<vector[elemento]) &&
(vector[elemento+1]<vector[elemento+2])){//Si el segundo número es el mayor de los
3.
menor=vector[elemento+1];
if(vector[elemento]<vector[elemento+2]){
medio=vector[elemento];
mayor=vector[elemento+2];
else{
medio=vector[elemento+2];
mayor=vector[elemento];
}
if((vector[elemento+2]<vector[elemento]) &&
(vector[elemento+2]<vector[elemento+1])){//Si el tercer número es el mayor de los 3.
menor=vector[elemento+2];
if(vector[elemento]<vector[elemento+1]){
medio=vector[elemento];
mayor=vector[elemento+1];
else{
medio=vector[elemento+1];
mayor=vector[elemento];
if((vector[elemento]==vector[elemento+1]) &&
(vector[elemento]==vector[elemento+2])){//Caso de 1,1,1 (tres iguales).
menor=vector[elemento];
medio=vector[elemento+1];
mayor=vector[elemento+2];
if((vector[elemento]==vector[elemento+1]) &&
(vector[elemento+2]>vector[elemento])){//Caso de 1,1,2 (dos primeros iguales y tercero
mayor).
menor=vector[elemento];
medio=vector[elemento+1];
mayor=vector[elemento+2];
}
if((vector[elemento]==vector[elemento+2]) &&
(vector[elemento+1]>vector[elemento])){//Caso de 1,2,1 (primero y tercero iguales y
segundo mayor).
menor=vector[elemento];
medio=vector[elemento+2];
mayor=vector[elemento+1];
if((vector[elemento+1]==vector[elemento+2]) &&
(vector[elemento]>vector[elemento+1])){//Caso de 2,1,1 (segundo y tercero iguales y
primero mayor).
menor=vector[elemento+1];
medio=vector[elemento+2];
mayor=vector[elemento];
vector[elemento]=menor;
vector[elemento+1]=medio;
vector[elemento+2]=mayor;
UpdateData(TRUE);
m_b1=vector[0];
m_b2=vector[1];
m_b3=vector[2];
m_b4=vector[3];
m_b5=vector[4];
m_b6=vector[5];
m_b7=vector[6];
m_b8=vector[7];
m_b9=vector[8];
m_b10=vector[9];
UpdateData(FALSE);
ESTE SI
function bubble_sort($array){
$count = count($array);
if ($count <= 0) return false;
for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j–-){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
function bubble_sort($array){
$count = count($array); //Cuento los elementos del arreglo
if ($count <= 0) return false; //Si no hay elementos entonces que voy
ordenar? retorno falso
for($i=0; $i<$count; $i++){//Recorro cada uno de los elementos
for($j=$i+1; $j<$count; $j++){
if ($array[$j] < $array[$i]){//Comparo si hay un elemento del
arreglo menor que el de la posicion i, si es asi intercambio posiciones
$tmp = $array[$j];
$array[$j] = $array[$i];
$array[$i] = $tmp;
}
}
}
return $array;
}