Algoritmo de ordenacion shaker sort no funciona
Publicado por Juan Manuel (21 intervenciones) el 22/06/2019 04:19:31
Hola , estuve probando el siguiente modulo de ordenacion y no puedo hacerlo funcionar
La variable ocup indica la ultima posicion del vector con contenido, pri es el inicio del vector y ult toma valor del ocup, ordenado es una bandera que se vuelve true al inicio del while pero de llevarse a cabo algun cambio se volvera falsa pero si no se ejecuta ningun cambio quedara true y saldra del bucle while con el vector ordenado.
La variable ocup indica la ultima posicion del vector con contenido, pri es el inicio del vector y ult toma valor del ocup, ordenado es una bandera que se vuelve true al inicio del while pero de llevarse a cabo algun cambio se volvera falsa pero si no se ejecuta ningun cambio quedara true y saldra del bucle while con el vector ordenado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void sacudida_shaker_sort (tvector &a, int ocup)
{
int pri=0,ult=ocup,i;
bool ordenado=false;
while (ordenado==false && pri <= ult);
{ ordenado=true;
for(i=ult;i>=pri+1;i--)
{
if(a[i]<a[i-1])
{
cambio(a[i],a[i-1]);
ordenado=false;
}
}
pri ++;
if (ordenado==false)
{
ordenado=true;
for(i=pri;i<=ult-1;i++)
{
if(a[i]>a[i+1])
{
cambio(a[i],a[i+1]);
ordenado=false;
}
}
}
ult--;
}
}
Valora esta pregunta
0