问题 问答题

设计一个双向起泡排序算法,即在排序过程中交替改变扫描方向。

答案

参考答案:

可通过设置一个标志位进行区分的方式来进行交替扫描,算法描述如下:

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*/

单项选择题
单项选择题 A1型题