(3)如果x>a[mid],则说明待查找数在mid+1到bot之间,改变top=mid+1;
重复以上过程直到已经找到或无法查找为止。
例如查找41,则只需查找3次即可找到。
假设用二分法在有1000个数据的有序数组中查找某个数据,则最多只需查找10次即可。
(因为210>1000)
9.排序:
(1)在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是选择排序。
(2)在待排序的数据表已经为有序时,快速排序算法花费时间反而多。
10.设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为(r-f+n)MOD n。
11.哈希表:
12.相关练习习题:
(1)数组A[30..100,20..100]以行优先的方式存储,每个元素占8个字节,且已知A[40,30]的地址为2000,则A[60,90]的地址为:
___________如果以列优先存储,则为:
___________
(2)设栈S的初始状态为空,现有6个元素组成的序列{1,3,5,7,9,11},对该序列在S栈上依次进行如下操作(从序列中的1开始,出栈后不在进栈):
进栈,出栈,进栈,进栈,进栈,进栈,出栈,进栈,问出栈的元素序列是:
_________,栈顶指针的值为______栈顶元素为:
__________
(3)把中缀表达式写成后缀及前缀表达式
1)(P+Q)*(A-B)/((C+D)/(E-F))-G 后:
_________________ 前:
_________________
2)A-C*D+B/E*(D/A) 后:
_________________ 前:
_________________
(4)根据后缀表达式,写出前缀及中缀表达式
ABC/DE+GH-/*+ 前:
_________________ 中:
_________________
备注:
以上这两题实际上考查了数据结构中的表达式树
(5)给出一棵二叉树的中序遍历:
DBGEACHFI与后序遍历:
DGEBHIFCA,画出此二叉树
(6)A=11001010B,B=00001111B,C=01011100B,则A∨B∧C=()B
A)01011110B)00001111C)01011100D)11001110E)11001010
(7)对给定的整数序列(54,73,21,35,67,78,63,24,89)进行从小到大的排序时,采用快速排序的第一趟扫描的结果是
A)(24,21,35,54,67,78,63,73,89)B)(24,35,21,54,67,78,63,73,89)
C)(24,21,35,54,67,63,73,78,89)D)(21,24,35,54,63,67,73,78,89)
(8)一棵n个结点的完全二叉树,则二叉树的高度h为
A)n/2C)(log2n)/2C)[log2n]+1D)2n-1
(9)设有一个含有13个元素的Hash表(0~12),Hash函数是:
H(key)=key%13,其中%是求余数运算。
用二次探查法解决冲突,则对于序列(8、31、20、33、18、53、27),则下列说法正确的是()。
A)27在1号格子中B)33在6号格子中C)31在5号格子中
D)20在7号格子中E)18在4号格子中
(10)
13.历届信息学奥赛试题中的数据结构试题:
选择题中的数据结构试题:
(1)(第10届)某车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。
已知某时该车站站台为空,从这一时刻开始出入记录为:
“进出进进出进进进出出进出”。
假设车辆入站的顺序为1,2,3……,则车辆出站的顺序为(E)
A、1,2,3,4,5B、1,2,4,5,7C、1,3,5,4,6
D、1,3,5,6,7E、1,3,6,5,7
(2)(第10届)二叉树T,已知其前序遍历序列为1243576,中序遍历序列为4215736,其后序遍历序列为(B)
A、4257631B、4275631C、4275361
D、4723561E、4526371
(3)(第10届)满二叉树的叶节点为N,则它的节点总数为(C)
A、NB、2NC、2N-1D、2N+1E、2^N-1
(4)
(第10届)在下图,从端点(E)出发存在一条路径可以遍历图中的每条边一次,而且仅遍历一次
(5)(第9届)一个高度为h的二叉树最小元素数目是(B)。
A)2h+lB)hC)2h-1D)2hE)2h-l
(6)(第9届)已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素是13,则第五个出队列的元素是(B)。
A)5B)41C)77D)13E)18
(7)(第8届)一个向量第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地址是(B)
A)110B)108C)100D)109
(8)(第8届)在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是(D)。
A)希尔排序B)起泡排序C)插入排序D)选择排序
(9)(第7届)在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找12,所需的关键码比较的次数为(C),用二分法查找41,所需的关键码比较此数为(B)。
A)2 B)3 C)4 D)5
(10)(第7届)若已知一个栈的入栈顺序是1,2,3,…,n,其输出序列为P1,P2,P3,…,Pn,若P1是n,则Pi是(C)
A)i B)n-1 C)n-i+1 D)不确定
(11)(第6届)设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为( D )
A.r-fB.r-f+1C.(r-f) MOD n+1D.(r-f+n) MOD n
(12)(第6届)在待排序的数据表已经为有序时,下列排序算法中花费时间反而多的是( D )
A.堆排序B.C.冒泡排序D.快速排序
(13)(第6届)某数列有1000个各不相同的单元,由低至高按序排列;现要对该数列进行二分法检索(binarysearch),在最坏的情况下,需检视( B )个单元
A.1000B.10C.100D.500
(14)(第6届)已知数组A中,每个元素A[I,J]在存贮时要占3个字节,设I从1变化到8,J从1变化到10,分配内存时是从地址SA开始连续按行存贮分配的。
试问:
A[5,8]的起始地址为( A )
A.SA+141B.SA+180C.SA+222D.SA+225
(15)(第6届)线性表若采用链表存贮结构,要求内存中可用存贮单元地址( D )
A.必须连续B.部分地址必须连续C.一定不连续D.连续不连续均可
(16)(第6届)下列叙述中,正确的是( D )
A.线性表的线性存贮结构优于链表存贮结构
B.队列的操作方式是先进后出
C.栈的操作方式是先进先出
D.二维数组是指它的每个数据元素为一个线性表的线性表
问题求解中的数据结构知识试题:
(17)(第9届)无向图G有16条边,有3个4度顶点、4个3度顶点,其余顶点的度均小于3,则G至少有 个顶点。
(18)(第8届)如下图,有一个无穷大的的栈S,在栈的右边排列着1,2,3,4,5共五个车厢。
其中每个车厢可以向左行走,也可以进入栈S让后面的车厢通过。
现已知第一个到达出口的是3号车厢,请写出所有可能的到达出口的车厢排列总数(不必给出每种排列)。
出口←
←
12345
S↓
(19)(第6届)1.已知,按中序遍历二叉树的结果为:
abc
问:
有多少种不同形态的二叉树可以得到这一遍历结果,并画出这些二叉树。