X32专项练习部分24

二分法查找时间复杂度

/*
    一个长度为 n 的正整数数列,先递减再递增,如果要找到数列中最小的正整数
    最优算法的平均时间复杂度是

    O(n)
    O(nlog(n))
    O(n^2)
    O(log(n))

    二分法找中点,中点左右两边数都比中点大就结束,否则就向较低的一边搜索
    查找数据长度为N,每次查找后减半,

    补充1下二分法查找时间复杂度
    第1次   N/2
    第2次
    ...
    第k次   N/2^k

    最坏的情况下第k次才找到,此时只剩一个数据,长度为1
    即 N/2^k = 1
    查找次数 k=log(N)
     */

堆排序调整顺序

/*
    将整数数组(7-6-3-5-4-1-2)按照堆排序的方式原地进行升序排列
    请问在整个排序过程中,元素3的数组下标发生过几次改变
    正确答案: C
    0
    1
    2
    3

	如下图,可以看出3的索引一共改变了2次
     */

在这里插入图片描述

通过元素序列的变化推断排序算法

/*
    对数列 (25,84,21,47,15,27,68,35,20) 进行()排序,元素序列的变化情况如下:

    (1)25,84,21,47,15,27,68,35,20
    (2)20,15,21,25,47,27,68,35,84
    (3)15,20,21,25,35,27,47,68,84
    (4)15,20,21,25,27,35,47,68,84

    正确答案: A
    快速排序
    简单选择排序
    希尔排序
    归并排序

    1 是原数组
    1 到 2: 取第一个数25,放到它应该在的位置
        25左边的数都比25小,右边的都比25大
    2 到 3: 对25左边的数列和25右边的数列{20,15,21},{47,27,68,35,84}分别进行快速排序
        同样先取各数列的第一个数20和47,使其分别放到应该在的位置
        即左边的数都比它小,右边的都比它大;
    3 到 4: 对{15},{21},{35,27},{68,84}四个子序列进行排序,最终排序完成;

    所以是快速排序

    简单选择排序是每次把最小的元素放在最前面
    希尔排序是每次比较对应位置,第1个位置与中间元素后1个位置交换
    归并排序第1趟结果应该是两两比较,2个中较小的部分放在前面
     */

树对应二叉树遍历顺序

/*
    将一棵树t 转换为孩子—兄弟链表表示的二叉树h
    则t的后根序遍历是h的()
        正确答案: B
        前序遍历
        中序遍历
        按层次遍历
        后序遍历

    树的先序遍历对应二叉树的先序遍历
    树的后序遍历对应二叉树的中序遍历
    树转换成二叉树遵循左孩子右兄弟原则
     */

在这里插入图片描述

二叉树前序遍历和后序遍历相反的情况

/*
    某二叉树,其度为1的节点数为n1,度为2的节点数为n2
    且先序遍历和后序遍历序列正好相反
    则此二叉树的深度为()

    正确答案: C
    2*n1+n2+1
    n1+n2
    n1+2*n2+1
    2*n1+n2

    前序和后序相反,说明是一条链表
    举例子来说
    就是左斜链和右斜链
    只有这2种情况满足前序后序相反
    因此深度就是结点数

    度为1的结点数为n1,度为0的结点数为1
    因为只有唯一的叶子节点
    所以答案是n1 + 1
    因为n2 = 0
    所以C选项符合答案
     */

二叉树线索化的空指针域个数

/*
    一棵左右子树不空的二叉树在先序线索化后
    其空指针域数为()
        正确答案: B
        0
        1
        2
        不确定

    这里我举1个栗子
        A
       / \
      B   E
     / \
    C   D
    就举上面的栗子

    C节点有2个空指针域
    左空指针指向前驱节点B
    右空指针指向后继节点D

    D节点有2个空指针域
    左空指针指向前驱节点C
    右空指针指向后继节点E

    E节点有2个空指针域
    左空指针指向前驱节点D
    右空指针指向后继节点null(空指针域)

    所以一共有1个空指针域

    有1个结论
    前序和后续线索化空指针域都是1,中序是2
    以后直接拿来用就行
     */

三叉链表存储二叉树空指针域个数

/*
    用三叉链表作二叉树的存储结构
    当二叉树中有n个结点时,有()个空指针
        正确答案: C
        n+1
        n
        n+2
        n-1

	下面我根据个人理解画了1张图
     */

在这里插入图片描述

三叉树带权路径最小值

/*
    已知三叉树T中6个叶结点的权分别是 2, 3, 4, 5, 6, 7
    T 的带权(外部)路径长度最小是()

        正确答案: B
        27
        46
        54
        56   

	节点偶数要加个0,奇数个就不用
    所以在构建哈夫曼树的时候最底层有1个0
    取2个元素就行
     */

在这里插入图片描述

总目录

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

muskfans

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值