void dbubblesort(sqlist r,int n)
{
int i,j,flag
flag=1
i=1
while(flag!=0)
{
flag=0
for(j=ij<n-ij++)
{
if(r[j]>r[j+1])
{
flag=1
r[0]=r[j]
r[j]=r[j+1]
r[j+1]=r[0]
}
}
for(j=n-ij>岩枯ij--)
{
if(r[j]<r[j-1])
{ flag=1
r[0]=r[j]
r[j]=r[j-1]
r[j-1]=r[0]
}
}
i++
}
}
#include <iostream.h>#define nmbLength 12 //数组大小
void bidirectionalTaxis(int numbers[],int n)
{
bool flag=true//排序条件
int temp
int zCount=(n-1),fCount=0//正反数计数初始化
while(flag)
{
//从反数计数点开始 遍历到n-1,即不遍历已反向排好的
for(int i=fCounti<zCounti++) //冒泡法正向遍历找最大值
{
if(numbers[i]>numbers[i+1])//前一个数大于后一个数,则交换
//使得大数冒到后面去
{
temp=numbers[i]
numbers[i]=numbers[i+1]
numbers[i+1]=temp
}
}
//从最后-1位开始反向遍历到 第一位 ,即不遍历正向已经排好的
for(int j=zCount-1j>fCountj--) //反向遍历,找次大州册穗值
{
if(numbers[j]>numbers[j-1])//后一个数大于前一个数,则交换姿租
//使得大数冒到前面去
{
temp=numbers[j]
numbers[j]=numbers[j-1]
numbers[j-1]=temp
}
}
if (zCount-1==fCount||zCount==fCount)//退出条件
{
flag=false
break// 跳出循环条件,考虑到册卜数组是奇数还是偶数个数
}
zCount--//正数自加,即排好了第zCount+1位数(初始是n)
fCount++//反数自加,即排好了第fCount+1位数(初始是1)
}
}
void main()
{
int a[nmbLength]={2,5,3,4,6,0,9,8,7,1}//要排序数组
cout<<"双向冒泡排序"<<endl<<"排序前: "
for(int i=0i<nmbLengthi++) //遍历A
{
cout<<a[i]
}
cout<<endl
cout<<"排序后: "
bidirectionalTaxis(a,nmbLength)
for(i=0i<nmbLengthi++) //遍历A
{
cout<<a[i]
}
cout<<endl
cout<<"反相输出:"
for(i=nmbLength-1i>=0i--) //遍历A
{
cout<<a[i]
}
cout<<endl
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)