Java数据结构和算法笔记.docx 14页

  • 0
  • 0
  • 0
  • 约3.71千字
  • 2020-10-21 发布
文档工具:
    1. 1、本文档共14页,可阅读全部内容。
    2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
    3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
    4. 文档侵权举报电话:19940600175。
    v1.0可编辑可修改 v1.0可编辑可修改 PAGE PAGE # Java数据结构和算法 第o讲综述 参考教材:Java数据结构和算法(第二版), [美]Robert lafore 数据结构的特性 数据结构 优点 缺点 数组 插入快;如果知道下标,可以非常快地存取 查找慢,删除慢,大小固定 有序数组 比无序的数组查找快 删除和插入慢,大小固定 栈 提供后进先出方式的存取 存取其他项很慢 队列 提供先进先出方式的存取 存取其他项很慢 链表 插入快,删除快 查找慢 二叉树 查找、插入、删除都快(如果树保持平衡) 删除算法复杂 红-黑树 查找、插入、删除都快;树总是平衡的 算法复杂 2-3-4 树 查找、插入、删除都快;树总是平衡的;类 似的树对磁盘存储有用 算法复杂 哈希表 如果关键字已知,则存储极快;插入快 删除慢,如果不知道关键字则存 储很慢,对存储空间使用不充分 堆 插入、删除快;对大数据项的存取很快 对其他数据项存取慢 图 对现实世界建模 有些算法慢且复杂 经典算法总结 查找算法:线性查找和二分查找 排序算法: 用表展示 第一讲数组 Java中数组的基础知识 1) 创建数组 在Java中把数组当作对象来对待,因此在创建数组时必须使用 new操作符: nt [] intArr = new int [10]; 一旦创建数组,数组大小便不可改变。 2) 访问数组数据项 数组数据项通过方括号中的下标来访问,其中第一个数据项的下标是 0: in tArr[0] = 123; 3) 数组的初始化 当创建数组之后,除非将特定的值赋给数组的数据项,否则它们一直是特殊的 null对 象。 int [] in tArr = {1,2, 3, 4, 5}; 等效于下面使用 new来创建数组并初始化: int [] intArr = in tArr[0] = 1; in tArr[1] = 2; in tArr[2] = 3; in tArr[3] = 4; in tArr[4] = 5; new int [5]; 面向对象编程方式 1)使用自定义的类封装数组 MyArray 类: 队头 队尾 出队- &0 闭 血 *** 口血- 入队 入栈出栈{D,C B,A} 入栈 出栈 {D,C B,A} b.不能无限制地调用本身,须有个出口,化简为非递归状况处理。 1.三角数字 该数列中的首项为1,第n项是由第n-1项加n后得到的。 1)使用循环查找第 n项 public static int triangleByWhile( int n) { int total = 0; while (n > 0) { total = total + n; n--; } return total; 直接转换法 直接转换法通常用来消除尾递归和单向递归, 将递归结构用循环结构来替代。尾递归是 指在递归算法中,递归调用语句只有一个, 而且是处在算法的最后。 例如求阶乘的递归算法: public long fact(i nt n) { if (n==0) retur n 1; else return n*fact(n-1); } 当递归调用返回时,是返回到上一层递归调用的下一条语句, 而这个返回位置正好是算 法的结束处,所以 ,不必利用栈来保存返回信息。 对于尾递归形式的递归算法, 可以利用循环结构来替代。例 如求阶乘的递归算法 可以写成如下循环结构的非递归算法: public long fact(i nt n) { int s=0; for (int i=1; i s=s*i;间接转换法 该方法使用栈保存中间结果,一般需根据递归函数在执行过程中栈的变化得到。 其一般 过程如下: 将初始状态s0进栈 while (栈不为空) { 退栈,将栈顶元素赋给 s; if (s 是要找的结果)返回; else { 寻找到s的相关状态s1; 将s1进栈 } } 间接转换法在数据结构中有较多实例, 如二叉树遍历算法的非递归实现、 图的深度优先 遍历算法的非递归实现等等,请读者参考主教材中相关内容 第八讲希尔排序 希尔排序是由Don aid提出来的,希尔排序基于插入排序,并且添加了一些新的特性, 从而大大提高了插入排序的执行效率。 插入排序的缺陷:多次移动。假如一个很小的数据在靠右端位置上, 那么要将该数据排 序到正确的位置上,则所有的中间数据都要向右移动一位。 希尔排序的优点:希尔排序通过加大插入排序中元素元素之间的间隔, 并对这些间隔的 元素进行插入排序,从而使得数据可以大幅度的移动。 当完成该间隔的排序后,希尔排序会 减少数据间的间隔再进行排序。依次进行下去。 基本思想 希尔排序(最小增量排序):算法先将要排序的一组数按某个增量 d (n/2,n为要排序 数的个数

    文档评论(0)

    • 内容提供方:yilinshanzhuang
    • 审核时间:2020-10-21
    • 审核编号:7020151134003010

    相似文档