1. 程式人生 > >資料結構--雙向氣泡排序

資料結構--雙向氣泡排序

雙向氣泡排序,又名雞尾酒混合排序,是對氣泡排序的一種改進演算法。
每完成一次迴圈就將最大元素排在隊尾最小值排到隊頭,時間成本能節約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; } }