求一个数据序列的逆序数量不可以通过( )排序中增加1个计数器实现。提示: 一个排列含有逆序的个数称为这个排列的逆序数。例如排列 263451 含有8个逆序(2,1),(6,3),(6,4),(6,5),(6,1),(3,1),(4,1),(5,1),因此该排列的逆序数就是8。
A. 树形选择排序
B. 冒泡排序
C. 归并排序
D. 插入排序
查看答案
将关键字(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;}