冒泡排序扩展之双向冒泡排序

说明:双向冒泡排序即从前向后,相邻元素两两比较,得到最大值,放到序列的最后一个位置,这是第一趟排序;再从后向前,相邻元素两两比较,得到最小值,放到序列的第一个位置,这是第二趟排序…直至整个序列有序。

void BubleSort_Double(ElemType A[],int n)
{
  int low=0;    //下界
  int high=n-1;    //上界
  bool flag;     //标志域
  while(low<high)
  {
  flag=false;
  for(int i=low;i<high;i++)    //从前向后两两比较
   {
     if(a[i]>a[i+1])
         swap(a[i],a[i+1]);
         flag=true;
     }
  high--;      //上界减1(已经找到一个大元素放在后面的最终位置了)
  if(flag==false)   break;
  
  flag=false;
  for(int j=high;j>low;j--)        //从后向前两两比较
  {
     if(a[j]<a[j-1])
         swap(a[j-1],a[j]);
         flag=true;
    }
  low++;      //下界加1(已经找到一个小元素放在前面的最终位置了)
   if(flag==false)   break;
  }
}
发布了28 篇原创文章 · 获赞 13 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/pilgrim_121/article/details/88797029