问题
问答题
设计一个双向起泡排序算法,即在排序过程中交替改变扫描方向。
答案
参考答案:
可通过设置一个标志位进行区分的方式来进行交替扫描,算法描述如下:
Alterbubblesort(r) /*交替扫描法起泡排序*/
Reetype R[];
{int i,j,temp,flag; /*设置扫描标志flag*/
flag=True;
i=0;
while(flag) /*开始扫描*/
{ flag=False;
for(j=n=i,j<i,j--)
{if(R[j],key<R[j-A],key)
{flag=True;
temp=R[j];
R[j]=R[j-A];
R[j-A]=temp;
}
}
for(j=l;j<n-A;j++)
{if(R[j].key>R[j+A].key)
{flag=True;
temp=R[j];
R[j]=R[i+A];
R[j-A]=temp;
}
}
i++; /*往右扫描*/
}
} /*AIterbubblesort*/