问题 填空题

[函数2.1说明]
函数void sort(int arry[],int n)的功能是对数组a中的arry[0]~arry[n-1]这n个元素进行排序。排序过程如下:第一趟对所有的偶数下标x,比较arr[x]和arry [x+1],若arry[x]>arry[x+1],则将两者交换; 第二趟对所有的奇数下标y,比较arry[y]和arry[y+1],若arry[y]>arry[y+1],则将两者交换; 第三趟对偶数下标,第四趟对奇数下标,……,依次类推,直至整个数组元素有序排列为止。
[函数2.1]
void sort (int arry[],int n)
int i,j,tag=1;
for(j=0; j<n; j++)
for(i= (1) ;i<n-1; (2) )
if (arry [i] >arry [i+1])
t=arry [i] ;
arry [il =arry [i+1] ;
arry [i+1] =t ;
tag=0 ;


tag++;
if( (3) )break;


[函数2.2说明]
这是一棵二叉树排序查找元素的程序,查找的方法是:首先与树的根结点的元素进行比较,若相等则找到,返回此结点的地址; 若要查找的元素小于根结点的元素值,则指针指向此结点的左子树,继续查找; 若要查找的元素大于根结点的元素值,则指针指向此结点的右子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。本题使用递归方法实现。
[函数2.2]
typedef struct node
int data;
struct node *left;
struct node *right;
NODE;
NODE *SearchSortTree(NODE *tree,int e)
if (tree ! =NULL)
if (tree->data<e)
(4) ;
else if(tree->data>e)
(5) ;
else return tree;

return tree;

答案

参考答案:return SearchSortTree(tree->right,e)

解析: 对于函数1,空(1)和空(2)要求填写内循环变量初值和增量。循环变量的初值是由外循环的循环变量决定的。因为第一趟初值为0,第二趟为1,第三趟又为0,因此空(1)为j%2,因为一次比较两个元素,所以循环增量为2,空(2)为i+=2。当连续两趟没有数据交换时就说明该数组已经有序了,可以提前退出循环,由tag标注,空(3)为tag>2或tag==3或tag>=3。
对于函数2,首先查找键值e与树根结点的关键字比较,如果值小的话,就在左子树中查找,空(4)为return SearchSortTree(tree->left,e),如果值大的话,就在右子树中查找,空(5)为return SearchSortTree(tree->right, e),如果相等的话就返回树根指针。

填空题
单项选择题