将关键字(46,79,56,33,40,90)按从小到大排列,则利用堆排序的方法建立的初始堆为( )
A. 90,79,56,33,40,46
B. 79,46,56,33,40,90
C. 90,79,56,46,40,33
D. 90,46,79,33,40,56
查看答案
已知一如下10个记录的表,其关键字序列为(2,15,19,25,30,34,44,55,58,80),用折半查找法查找关键字为19的记录,比较次数是( )
A. 1次
B. 2次
C. 3次
D. 4次
如下代码是在链表中删除节点,请补充完整,并填写在如下括号void delete_node(NODE *head,int i){NODE *q;NODE *p;int n=0;q=head;while( ——————————){q=q->link;n++;}if(i>0&&q->link!=NULL){p=q->link;( ——————————);free(p);printf("delete node is success!\n");}}
以下是快速排序部分代码,请补充完整int partition(int arr[],int l,int r){swap(&arr[l],&arr[rand()%(r-l+1)+l]);int v=arr[l];int i=l+1;int j=r;while(TRUE){while(————————) i++;while(————————)j--;if(i>j) break;swap(&arr[i],&arr[j]);i++;j--;}swap(&arr[l],&arr[j]);return j;}
当k=5时以下函数运行结果是void f(int k){if( k>0 ){printf("%d ",k);f(k-1);printf("\n ");f(k-1);}}