校门外的树(pascal)

来源:百度知道 编辑:UC知道 时间:2024/06/04 20:00:50
procedure change(num1,num2:integer);
var temp:atype;
{ temp←a[num1];a[num1]←a[num2];a[num2]←temp };/*change*/
procedure qsort(s,e:integer); /*线段a[s]…a[e]按照起始位置的顺序进行排列*/
var i,j:integer;
aa:atype;
{ if s>=e then exit;
aa←a[s+random(e-s)]; /*随机选出一条线段aa*/
i←s-1;j←e+1; /*左右指针初始化*/
while true do /*寻找中间指针j,使得左区间a[s,1]…a[j,1]都小于等于aa[1],右区间a[j+1,1] …a[e] 都大于aa[1]*/
{ repeat i←i+1 until a[i,1]>=aa[1]; /*由左而右搜索第一个a[i,1]≥aa[1]的元素a[i]*/
repeat j←j-1 until a[j,1]<=aa[1]; /*由右而左搜索第一个a[j,1]≤aa[1]的元素a[j]*/
if i<j then a[i] ←→a[j]交换
else break
};/* while */
qsort(s,j); /*对左区间快速排序*/
qsort(j+1,e) /*对右区间快速排序*/
};/* qsort */
{ assign(input,'tree.in');reset(input); /*输入文件读准备*/
assign(output,'tree.ou

while true do
这个语句的意思就是
在不break(退出循环情况下)
一直进行循环
直到满足 i>=j时 退出循环

while TRUE do 即死循环
在 while 内部有一或n句退出语句


if i<j then a[i] ←→a[j]交换
else break

就是一定要执行那个循环,里面有条件退出循环的,如果不退出,就一直循环

TRUE是Boolean型,语句是正确的

条件始终满足,始终进入下一步