一个算法考题,在空白添上适当语句,并说明算法功能:
(画线后面是我填的答案)
void suanfa(SeqList R)
{
int i,j,x,b;
i=1,b=1;//b为真
while(i<n && b)
{
b=0;
for(j=1;j<n;i++)
if(__________) R[j]>R[j+1]
{
x=R[j];
R[j]=R[j+1];
R[j+1]=x;
___________; j++;b=1;
}
}
}
=======================================
我认为和这个程序原理是一样的,上面的是自上向下扫描而已
void BubbleSort(SeqList R)
{ //R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序
int i,j;
Boolean exchange; //交换标志
for(i=1;i<n;i++)
{ //最多做n-1趟排序
exchange=FALSE; //本趟排序开始前,交换标志应为假
for(j=n-1;j>=i;j--) //对当前无序区R[i..n]自下向上扫描
if(R[j+1].key<R[j].key){//交换记录
R[0]=R[j+1]; //R[0]不是哨兵,仅做暂存单元
R[j+1]=R[j];
R[j]=R[0];
exchange=TRUE; //发生了交换,故将交换标志置为真
}
if(!exchange) //本趟排序未发生交换,提前终止算法
return;
} //endfor(外循环)
} //BubbleSort