(2)
for(j=1; (1)j<=n-1 ;j++); {flag=0;
for(i=1; (2)i<=n-j ;i++) if(a[i].key>a[i+1].key)
{flag=1; temp=a[i];
(3)a[i]=a[i+1] ; (4)a[i+1]=temp ; }
if(flag= =0)break; 中序遍历:2,3,4,5,6,7,14,16,18
四、程序填空题
1.以下直接输入排序算法对存放在a[0],a[1],···,a[n-1]中,长度为n的记录序列按关键字key由小到大排序,完成程序中的空格部分。 void disort (NODE a[ ], int n) { int I,j;
NODE temp; /*工作单位*/ for (i=1;i while (__①_ j>=0___&&temp.key a[j+1]=____④__ temp __; } } 2.以下冒泡法程序对存放在a[1],a[2],……,a[n]中的序列进行冒泡排序完成程序中的空格部分,其中n是元素个数,程序按升序排列。 Void bsort (NODE a[ ], int) { NODE temp; int i,j,flag; else if(a[mid].key } return -1; /*查找失败*/ } 2.编写顺序查找算法。 顺序查找算法如下: int search(NODE a[],int n, int k) /*在a[0]~a[n-1]中顺序查找关键字等于k的记录。查找成功时返回该记录的下标,失败时返回-1*/ } } 程序中flag的功能是 (5)当某趟冒泡中没有出现交换则已排好序结束循环 五、算法设计题 1.写出在二叉树中删除一个结点的算法,且使删除后仍为二叉树,设删除的结点由指针p所指,其双亲结点由指针f所指,并假设被删除结点是其双亲结点的右孩子。 折半查找算法如下; int Binary_Search(NODE a[],int n, int k) /* 在a[0]到a[n-1]中,用折半查找算法查找关键字等于k的记录,查找成功返回该记录的下标,失败时返回-1 */ { int low,mid,high; low=0; high=n-1; while(low<=high) { mid=(low+high)/2; if(a[mid].key==k) return mid; /*查找成功,返回查找到的记 录的下标*/ { int i=0; while(i */ i++; if(a[i].key=k) /*查找成功*/ return i; else return -1; /*查找失败*/ } 六、完成:实验5――查找 实验6——排序 根据实验要求(见教材P207-208)认真完成本实验,并提交实验报告。 13 49 49 最新资料,word文档,可以自由编辑!! 49 83 47 41 83 59 41 精43 47 41 43 59 83 59 41 41 49 品 47 43 47 83 43 59 83 49 59 文 59 43 档 43 43 47 59 47 49 47 41 83 49 下 49 41 83 83 59 41 59 47 49 载 47 49 59 83 43 41 83 43 41 【本页是封面,下载后可以删 !】 除 14