设一组记录的关键字序列为(51、85、61、43、45、49),采用堆排序算法完成以下操作(要求小根堆,并画出中间过程)1、以二叉树描述6个元素的初始堆2、以二叉树描述逐次取走堆顶元素后,经

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 03:33:24
设一组记录的关键字序列为(51、85、61、43、45、49),采用堆排序算法完成以下操作(要求小根堆,并画出中间过程)1、以二叉树描述6个元素的初始堆2、以二叉树描述逐次取走堆顶元素后,经

设一组记录的关键字序列为(51、85、61、43、45、49),采用堆排序算法完成以下操作(要求小根堆,并画出中间过程)1、以二叉树描述6个元素的初始堆2、以二叉树描述逐次取走堆顶元素后,经
设一组记录的关键字序列为(51、85、61、43、45、49),采用堆排序算法完成以下操作
(要求小根堆,并画出中间过程)
1、以二叉树描述6个元素的初始堆
2、以二叉树描述逐次取走堆顶元素后,经调整得到的5个元素、4个元素的堆

设一组记录的关键字序列为(51、85、61、43、45、49),采用堆排序算法完成以下操作(要求小根堆,并画出中间过程)1、以二叉树描述6个元素的初始堆2、以二叉树描述逐次取走堆顶元素后,经
这是我写的C++代码的简单实现
#include<iostream>
using namespace std;
int parent(int i);
int left_child(int i);
int right_child(int i);
void max_heapify(int a[],int i,int heap_size);
void build_max_heap(int a[],int heap_size);
void heap_sort(int a[],int heap_size);
int main()
{
\x05int a[]={51,85,61,43,45,49};
\x05int i;
\x05for(i=0;i<=5;i++){
\x05\x05cout<<" ";cout<<a[i];cout<<" ";}
\x05\x05cout<<endl;
\x05heap_sort(a,5);
\x05for(i=0;i<=5;i++){
\x05\x05cout<<" ";cout<<a[i];cout<<" ";}
\x05\x05cout<<endl;
}
int parent(int i){
\x05\x05return i/2;
}
int left_child(int i){
\x05\x05return 2*i;
}
int right_child(int i){
\x05\x05return 2*i+1;
}
void max_heapify(int a[],int i,int heap_size){
\x05\x05int largest;
\x05\x05int n;
\x05\x05int l=left_child(i);
\x05\x05int r=right_child(i);
\x05\x05if((l<=heap_size)&&(a[l]>a[i]))
\x05\x05\x05largest=l;
\x05\x05else
\x05\x05\x05largest=i;
\x05\x05if((r<=heap_size)&&(a[r]>a[largest]))
\x05\x05\x05largest=r;
\x05\x05if(largest!=i){
\x05\x05\x05n=a[largest];
\x05\x05\x05a[largest]=a[i];
\x05\x05\x05a[i]=n;
\x05\x05max_heapify(a,largest,heap_size);
}}
\x05\x05
void build_max_heap(int a[],int heap_size){
\x05        int i;\x05
\x05\x05for(i=heap_size/2;i>=0;i--)
\x05\x05\x05max_heapify(a,i,heap_size);
}
void heap_sort(int a[],int heap_size){
\x05\x05int i,n;
\x05\x05build_max_heap(a,heap_size);
\x05\x05for(i=heap_size;i>=1;i--){
\x05\x05\x05n=a[i];
\x05\x05\x05a[i]=a[0];
\x05\x05\x05a[0]=n;
\x05\x05\x05heap_size--;
\x05\x05\x05max_heapify(a,0,heap_size);
}
}

设一组初始记录关键字序列为(15,17,18,22,35,51,60),要求计算出成功查找时的平均查找长度.结果我已经有了 数据结构问题:设一组初始记录关键字序列为(15,17,18,22,35,51,60),要求计算出成功查找时的平均查 设一组记录关键字序列为(80,70,33,65,24,56,48),则 用筛选法建成的初始堆为最好能给出图解 设一组初始记录关键字的长度为8,则最多经过多少趟直接插入排序可以得到有序序列 设一组记录的关键字序列为(51、85、61、43、45、49),采用堆排序算法完成以下操作(要求小根堆,并画出中间过程)1、以二叉树描述6个元素的初始堆2、以二叉树描述逐次取走堆顶元素后,经 有关快速排序的问题设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( ).(A) 2,3,5,8,6 (B) 3,2,5,8,6(C) 3,2,5,6,8 (D) 2,3,6,5,8 我需要详细的步骤和原理.刚 设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( ).(A) 2,3,5,8,6 (B) 3,2,5,8,6(C) 3,2,5,6,8 (D) 2,3,6,5,8 我需要详细的步骤和原理.刚学写这东西,还冒咋搞 设有一组关键字序列(34,76,45,18,26,54,92),则由这组记录关键字生成的二叉排序树的深度为()5,6,7,选哪个, 数据结构 堆排序设一组记录关键字序列为(80,70,33,65,24,56,48),则用筛选法建成的初始堆为请写出每一步的具体步骤 设一组初始记录关键字序列为(45,80,68,89,45,68,48,40,22,78)则分别给出第4趟简单选择排序和第4趟直接插入排序后的结果 数据结构 填空题目 二叉排序树的平均查找长度设一组初始记录关键字序列为(20,12,42,31,18,14,28),则根据这些记录关键字构造的二叉排序树的平均查找长度 具体过程是怎么样的不会啊 一组记录的关键字为{45,80,55,40,42,85},则待排序的上述无序序列构造的大顶堆是( )A 80.45,55,40,42,85 B 85,80.55.40.42.45C 85,80,55,45,42,40 D 85,55,80,42,45,40 数据结构的哈希表中链地址法求解冲突的平均查找长度解法 会的大侠看一下 设散列表的长度为8,散列函数H(k)=k mod 7,初始记录关键字序列为(25,31,8,27,13,68),要求分别计算出用线性探测法和链地 已知一组关键字为{23,48,36,72,79,82,23,40,16,35}其中每相邻两个位有序子序列.对这些子序列进行一趟两两归并的结果是什么?求大虾解答, 2.设给定一个权值集合W=(3,5,7,9,11),要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度WPL.4.设一组初始记录关键字集合为(25,10,8,27,32,68),散列表的长度为8,散列函数H(k) 求数据结构算法?求“假设有 1000个关键字为小于10000的整数的记录序列,请编写一种排序算法,要求以尽可能少的比较次数和移动次”的数据结构算法 一组关键字序列为(27,17,9,19,16,43,53,8,63),用哈希函数H(key)=key MOD 8和链地址法处理冲突,画出该哈希表的存储结构图. .对一个由n个关键字不同的记录构成的序列,能否用比2n-3少的次数选出该序列中关键字取最大值和关键字取最小值的记录?请说明如何实现?在最坏情况下至少进行多少次比较?清华大学出版社出