解析:折半查找即二分查找,要求顺序存储,元素有序
解析:假设长度为n数组a, 从数组最前(插到a[0]前)到最后(插到a[n-1]后)共n+1种情况,分别需要移动n,n-1,...,0次,每种情况等概率P=1/(n+1), 期望为(n+n-1+...+0)/(n+1) = (1+n)*n/2/(n+1)=n/2
解析:冒泡排序:将最大值放到末尾,一直缩小范围到第一位
解析:顺序查找方法和折半查找方法的平均查找长度都与元素的个数有关,由于散列结构是由事先准备好的散列函数关系与处理冲突的方法来确定数据元素在散列表中的存储位置的,因此散列表查找方法的平均查找长度与元素的个数无关
解析:
循环队列的相关条件和公式:
队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度
1.队空条件:rear==front
2.队满条件:(rear+1) %QueueSIze==front
3.计算队列长度:(rear-front+QueueSize)%QueueSize
4.入队:(rear+1)%QueueSize
5.出队:(front+1)%QueueSize
解析:
二分查找第一次:index=(0+length-1)/2
第二次:index'=(0+index-1)/2
解析:
关键字的比较次数可以理解为时间复杂度。
与初始序列是否有关,可以理解为最好最坏的时间复杂度是否一样。
A,简单选择排序:最好:O(n^2) 最坏:O(n^2)
B,快速排序: 最好:O(nlogn) 最坏: O(n^2)
C, 插入排序: 最好:O(n) 最坏:O(n^2)
D, shell排序 最好:O(n) 最坏:O(n^2)
选择排序算法是当前元素与序列最小元素交换,每个关键字的比较次数与初始状态无关,与元素初始位置无关
快速排序是冒泡排序的改进,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。该算法的复杂度和元素交换次数都与初始状态有关。
希尔排序是插入排序的改进,希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。初始状态也是影响到关键字的比较次数。
答案:
解析:每一个数据元素的存储位置都和线性表的起始位置相差一个和数据元素在线性表中的位序成正比的常数。由此,只要确定了存储线性表的起始位置,线性表中任一元素都可随机存取,所以线性表的顺序存储结构是一种随机存取的存储结构。
(BC)
归并排序的在merge中是跟序列有关,如果有序,比较次数最少n/2,最糟是元素错落n-1。而选择排序比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n-2)+...+1=n*(n-1)/2。