zoukankan      html  css  js  c++  java
  • 软件设计复习5

    数据结构与算法基础

    数组与矩阵

    数组类型                         存储地址计算
           一维数组                       a[i]的存储地址为:a+i*len
           a[n]

    二维数组                       a[m][n] a[i][j]的存储地址 (按行存储) 为:a+(i*n+j)*len
                                                 a[i][j]的存储地址 (按列存储) 为:a+(j*m+i)*len

    练习1:
           已知5行5列的二维数组a中的各元素占两个字节,求元素a[2][3]按行优先存储的存储地址?

    答:a+26
         根据按行存储:a+(i*n+j)*len
    点击查看答案

    稀疏矩阵

    上三角矩阵:(2n-i+1)*i/2+j
           下三角矩阵:(i+1)*i/2+j


           考试快捷方法:代入法

    练习1:

    将A00 代入,i=0,j=0,A选项为1,B选项为0,C选项为0,D选项为1
    排除B C
    代入A11,为3则是正确答案
    点击查看答案

     

    数据结构的定义

    数据逻辑结构

    1.线性结构
           2.非线性结构
           树状图、图

    线性表

    线性表存储方式
           顺序表:连续方式,类似一维数组
           链表:存数据、存指针

    链表的基本操作:

    ① 单链表删除结点
           ② 单链表插入结点
           ③ 双向链表删除结点
           ④ 双向链表插入结点

    顺序存储与链式存储对比

    队列与栈

    队列:先进先出
           栈:先进后出
           循环队列:
           队空条件:head=tail
           队满条件:(tail+1)%size=head

    练习1:
           元素按照a、b、c的次序进入栈,请尝试写出其所有可能的出栈序列

    答:a b c 
          b a c
          c b a
    点击查看答案

    练习2:

    答:D
    点击查看答案

    广义表

    表头(head):第一个元素 表尾(tail):除了表头以外的所有元素

    例1:  LS1长度为:3,深度为(嵌套次数):2,深度就是包括括号的层数
     例2: head(tail(LS1))得到 (b,c)
         head(head(tail(LS1)))得到 b
    点击查看答案

    树与二叉树

    结点的度:一个结点拥有的孩子结点数
           树的度:结点最高的度
           叶子结点:没有孩子节点的
           分支结点:有相应的分支
           内部结点:既非叶子结点,也非根节点,夹在中间
           父结点:有子结点
           子结点:
           兄弟结点:平级结点
           层次结点:分层次


    二叉树的重要性

    1.在二叉树的第i层上最多有2的i-1次方个结点(i>=1);
           2.深度为k的二叉树最多有2的k次方-1个结点(i>=1);
           3.对任何一个二叉树,如果其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1;

    二叉树遍历

    前序遍历:根左右(1 2 4 5 7 8 3 6)
           中序遍历:左根右(4 2 7 8 5 1 3 6)
           后序遍历: 左右根(4 8 7 5 2 6 3 1)
           层次遍历:依次遍历

    哈夫曼树

    基本概念
           树的路径长度:树中路径累加长度
           权:数值代表某种字符出现的频度
           带权路径长度:路径长度*权值
           树的带权路径长度:总的带权路径长度相加
           排序与查找

    算法基础及常见的算法

    算法的特点:
           有穷性:执行有穷步之后结束
           确定性:算法中每一条指令都必须有确切的含义,不能含糊不清
           输入(>=0)
           输出(>=1)
           有效性:算法的每个步骤都能有效执行并能得到确定的结果,例如a=0,b/a就无效

    算法的复杂度:

    顺序查找:


           等概率:(n+1)/2

     二分查找法:



           (注:有序排列)

    散列表查找:

    排序方法分类

    ① 插入类排序
           直接插入排序

    直接选择排序

           希尔排序

           (注:取奇数排序)

    ② 交换类排序
           冒泡排序

            快速排序

    ③ 选择类排序
           简单选择排序
           堆排序


    ④ 归并排序

    ⑤ 基数排序

    排序状况

    我是一个刚刚开始写博客的大可,内容有不详细或是错误的,还希望各位大佬私信我,我会进行纠正,谢谢啦!^-^
  • 相关阅读:
    【ES6】数组的扩展——扩展运算符
    【ES6】函数的扩展
    菜鸡程序员是如何写代码的?
    我是技术总监,我出来求职,竟然找不到工作!
    为什么互联网公司天天都在招人?
    这个立冬,我线下面基了一位TMD高级专家,太牛逼了!
    太可怕了!有些码农为啥写代码,写到监狱里去了?
    56岁潘石屹生日当天宣布要学编程语言Python,网友:地产商来抢码农饭碗了!
    如何写出让同事无法维护的代码?
    hdu 1037 Keep on Truckin'
  • 原文地址:https://www.cnblogs.com/sunjiaojiao/p/11245624.html
Copyright © 2011-2022 走看看