数据结构--双向冒泡排序

双向冒泡排序,又名鸡尾酒混合排序,是对冒泡排序的一种改进算法。
每完成一次循环就将最大元素排在队尾最小值排到队头,时间成本能节约1倍。

其算法如下:

void DoubleBubbleSort(int r[],int size)
{
    int i,low=0,high=size-1,temp;
    bool exchange;
    while(lowfalse;
        //从前往后进行一次冒泡排序,将最大的值放在最后一个位置 
        for(i=low;iif(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]1]) //如果后面的值比前面的值小,发生交换
            {
                temp=r[i];
                r[i]=r[i-1];
                r[i-1]=temp;
                exchange=true;
            }
        }
        if(!exchange)   //本趟没有发生交换,提前终止 
            return;
        //更新上下边界 
        ++low;
        --high;
    }   
}

你可能感兴趣的:(数据结构与算法)