資料結構--雙向氣泡排序
阿新 • • 發佈:2019-01-05
雙向氣泡排序,又名雞尾酒混合排序,是對氣泡排序的一種改進演算法。
每完成一次迴圈就將最大元素排在隊尾,最小值排到隊頭,時間成本能節約1倍。
其演算法如下:
void DoubleBubbleSort(int r[],int size)
{
int i,low=0,high=size-1,temp;
bool exchange;
while(low<high)
{
exchange=false;
//從前往後進行一次氣泡排序,將最大的值放在最後一個位置
for(i=low;i<high;++i)
{
if (r[i]>r[i+1]) //如果前面的值比後面的值大,發生交換
{
temp=r[i];
r[i]=r[i+1];
r[i+1]=temp;
exchange=true;
}
}
//從後往前進行一次氣泡排序,將最小的值放在第一個位置
for(i=high-1;i>low;--i)
{
if(r[i]<r[i-1]) //如果後面的值比前面的值小,發生交換
{
temp=r[i];
r[i]=r[i-1];
r[i-1]=temp;
exchange=true;
}
}
if(!exchange) //本趟沒有發生交換,提前終止
return;
//更新上下邊界
++low;
--high;
}
}