上一页 1 2 3 4 5 6 7 ··· 35 下一页
摘要: 2.4.16对于N=32,构造数组使得堆排序使用的比较次数最多以及最少。最多比较的情况:堆排序由两个动作实现:1)构建堆2)缩小堆排序数组。反向来看,对于一个已经构建好的大堆,在缩小堆排序数组时要想比较次数最多就需要交换次数最多,要交换次数最多,就需在堆顶元素与堆尾元素交换后下沉最多,要想下沉最多可 阅读全文
posted @ 2018-10-29 08:46 修电脑的龙生 阅读(1522) 评论(0) 推荐(0) 编辑
摘要: 2.4.13想办法在sink()中避免检查j<N。答:在delMax中,pq[N+1]=null变更成pq[N+1]=无穷小哨兵值,j<N时,j<N && less(j,j+1) =真&&less(j,j+1)=less(j,j+1)j=N时,j<N && less(j,j+1)=假&&假=假=le 阅读全文
posted @ 2018-10-29 08:44 修电脑的龙生 阅读(438) 评论(1) 推荐(0) 编辑
摘要: 2.4.14对于没有重复元素的大小为N的堆,一次删除最大元素的操作中最少要交换几个元素?构造一个能够达到这个交换次数的大小为15的堆。连续两次删除最大元素呢?三次呢?答:一次删除最大元素操作最少交换下取整(lgN)个元素。证:删除引起的交换发生在N位置的叶结点与根结点的交换和下沉的过程中的交换,下沉 阅读全文
posted @ 2018-10-29 08:44 修电脑的龙生 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 2.4.12如果你的应用场景中大量的找出最大元素的操作,但插入元素和删除最大元素操作相对较少,哪种优先队列的实现方法更有效:堆、元序数组、有序数组?答:有序数组。 阅读全文
posted @ 2018-10-29 08:43 修电脑的龙生 阅读(525) 评论(0) 推荐(0) 编辑
摘要: 2.4.11如果你的应用中的有大量的插入元素的操作,但只有若干删除最大元素操作,哪种优先队列的实现方法有效:堆、无序数组、有序数组?答:无序数组。 阅读全文
posted @ 2018-10-29 08:41 修电脑的龙生 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 2.4.9给出ABCDE五个元素可能构造出来的所有堆,然后给出AAABB这五个元素可能构造出来的所有堆。答:1)ECDAB ECDBA EDCAB EDCBA 2)BBAAA BABAA 阅读全文
posted @ 2018-10-29 08:38 修电脑的龙生 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 2.4.10假设我们不想浪费堆有序的数组pq[]中的那那个位置,将最大的元素放在pq[0],它的子结点放在pq[1]和pq[2],以此类推。pq[k]的父结点和子结点在哪里?答:k的父结点位置为 上取整((k-1)/2),子结点位置为2k+1,2k+2 阅读全文
posted @ 2018-10-29 08:38 修电脑的龙生 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 2.4.7在堆中,最大的元素一定在位置1上,第二大的元素一定在位置2或者3上。对于一个大小为31的堆,给出第k大的元素可能出现的位置和不可能出现的位置,其中k=2、3、4(设元素值不重复)。解:堆是满树时:堆有f层,f=log(n+1)。以任意结点为根的子树都是满树,以第k大结点为根的子树的最高满子 阅读全文
posted @ 2018-10-29 08:37 修电脑的龙生 阅读(1005) 评论(1) 推荐(1) 编辑
摘要: 2.4.8回答上一道练习中第k小元素的可能和不可能的位置。答:设堆有n个元素,堆是满树,n=2^i-1,第k小元素的另一种说法是第n-k+1大元素。再按2.4.7方法求解。 阅读全文
posted @ 2018-10-29 08:37 修电脑的龙生 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 2.4.5将EASYQUESTION顺序插入一个面向最大元素的堆中,给出结果。 阅读全文
posted @ 2018-10-29 08:36 修电脑的龙生 阅读(741) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 35 下一页