您的位置:首页 > 其它

双向冒泡排序

2016-01-22 21:53 381 查看
#include<iostream>

using namespace std;

int main()

{

int a[100],i,n;

cin>>n;

for(i=0; i<n; i++)

cin>> a[i];

int low, high,lastSwapPos,temp,cnt;

low = 0;

high = n - 1;

while (low < high)

{

lastSwapPos = high; //设置未排序序列的最后一个元素位置

for (i=low; i<lastSwapPos; i++)

{

cnt++;

if (a[i]>a[i+1])

{

temp = a[i];

a[i] = a[i+1];

a[i+1] = temp;

high = i; //记录交换位置

}

}

if (lastSwapPos == high) //若未进行交换操作,说明排序已经完成

break;

lastSwapPos = low; //设置未排序序列的第一个元素位置

for(i=high;i>lastSwapPos;i--)

{

if(a[i-1]>a[i])

{

temp=a[i-1];

a[i-1]=a[i];

a[i]=temp;

low=i;

}

}

if (lastSwapPos == low) //若未进行交换操作,说明排序已经完

break;

}

for(i = 0; i<n; i++)

cout<<a[i]<<" ";

cout<<endl;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: