当前位置: 首页 > news >正文

网站备案查询到什么资料慈溪建设银行支行网站

网站备案查询到什么资料,慈溪建设银行支行网站,微信开放平台是干什么的,可不可以异地建设网站文章目录 前言参考目录学习笔记1:归并排序的简单演示1.1:基本思路1.2:归并排序的 demo 演示1.3:代码实现2:自顶向下的归并排序2.1:比较次数与访问次数的证明2.2:代码优化2.3:优化后代…

文章目录

    • 前言
    • 参考目录
    • 学习笔记
      • 1:归并排序的简单演示
      • 1.1:基本思路
      • 1.2:归并排序的 demo 演示
      • 1.3:代码实现
      • 2:自顶向下的归并排序
      • 2.1:比较次数与访问次数的证明
      • 2.2:代码优化
      • 2.3:优化后代码实现
      • 3:自底向上的归并排序
      • 3.1:代码实现
      • 4:排序算法的复杂度
      • 5:稳定性
      • 5.1:插入排序:稳定
      • 5.2:选择排序:不稳定
      • 5.3:希尔排序:不稳定
      • 5.4:归并排序:稳定

前言

本章节主要内容是 归并排序,除此之外还有 排序算法的复杂度 以及 稳定性 的相关内容。

本章节中间有穿插说明 比较器(Compartor),不过本文暂且略过这一内容,感兴趣的朋友建议移步视频自行学习总结。

参考目录

  • B站 普林斯顿大学《Algorithms》视频课
    (请自行搜索。主要以该视频课顺序来进行笔记整理,课程讲述的教授本人是该书原版作者之一 Robert Sedgewick。)
  • 微信读书《算法(第4版)》
    (本文主要内容来自《2.2 归并排序》)
  • 官方网站
    (有书本配套的内容以及代码)

学习笔记

注1:下面引用内容如无注明出处,均是书中摘录。
注2:所有 demo 演示均为视频 PPT demo 截图。

1:归并排序的简单演示

1.1:基本思路

归并排序基本思路:

  • 数组一分为二
  • 每一半 递归 排序
  • 合并两半

在这里插入图片描述

1.2:归并排序的 demo 演示

对于归并排序,Sedgewick 教授的视频进行了分步演示,下面截图进行简单说明。

排好序的两个子数组:

在这里插入图片描述

在原数组的基础上复制一个辅助数组:

在这里插入图片描述

需要三个下标来进行操作:
i、j分别是两个比较的子数组的下标,k是原数组的下标。

比较两个子数组的数据,将较小的值放回原数组:

在这里插入图片描述

如果两个值相同,则将左侧子数组的值放回原数组:

在这里插入图片描述

如果其中一个子数组已经没有元素,则另一个子数组的元素直接放回原数组:

在这里插入图片描述

1.3:代码实现

edu.princeton.cs.algs4.Merge#merge

在这里插入图片描述

edu.princeton.cs.algs4.Merge#sort

在这里插入图片描述

2:自顶向下的归并排序

上面分步实现的归并排序是属于自顶向下的归并排序。官网给出了归并的分步结果图:

(截图自官网)
在这里插入图片描述

2.1:比较次数与访问次数的证明

比较次数和访问次数是衡量一个算法优劣与否的重要参考标准,因此这里给出了相关的证明。

(截图自视频 PPT)
在这里插入图片描述

每次归并最多需要访问数组6N次:

  • 2N次用来复制
  • 2N次用来将排好序的元素移动回去
  • 另外最多比较2N次

视频中,教授使用长度 N 为 2n 的数组来证明:
D ( N ) = 2 D ( N / 2 ) + N , N > 1 ,且 D ( 1 ) = 0 D(N) = 2D(N/2) + N,N>1,且 D(1) = 0 D(N)=2D(N/2)+NN>1,且D(1)=0

一共有三种证明方式,但说实话我看了几遍还是没太懂怎么算的(哭),先把证明方式贴出来:

方式一:图形法证明

在这里插入图片描述

方式二:数学方式证明

在这里插入图片描述

方式三:数学归纳法证明

在这里插入图片描述

这里再贴一下书里面的相关证明帮助理解:

在这里插入图片描述

命题F。对于长度为N的任意数组,自顶向下的归并排序需要½NlgN至NlgN次比较。

书中关于命题 F 的证明,相对来说容易理解一些,可以自行参考学习。

2.2:代码优化

归并排序虽然速度比较快,但是也有一些缺点,因此也提出了一些优化方案:(这里列出对应的章节)

  • 2.2.2.1 对小规模子数组使用插入排序
  • 2.2.2.2 测试数组是否已经有序
  • 2.2.2.3 不将元素复制到辅助数组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3:优化后代码实现

edu.princeton.cs.algs4.MergeX#sort

在这里插入图片描述

3:自底向上的归并排序

自顶向下的归并排序使用了递归的方式,为了减少递归的操作,又提出了自底向上的归并排序。

(截图自官网)
在这里插入图片描述

3.1:代码实现

edu.princeton.cs.algs4.MergeBU#sort

在这里插入图片描述

4:排序算法的复杂度

这里使用了决策树来进行说明,不过我觉得这一部分书本的说明不是很好,有些地方说得云里雾里的……

例如:

在这里插入图片描述

一眼看过去不知道是啥。然后看教授的PPT:

在这里插入图片描述

还有对于命题 I 的描述,每一个字我都认识,愣是读了好几遍才读通顺:

命题I。没有任何基于比较的算法能够保证使用少于lg(N!)~NlgN次比较将长度为N的数组排序。

再来看看视频里是怎么说的:

Any compare-based sorting algorithm must use at least lg(N!)~NlgN compares in the worst-case.
任何基于比较的排序算法,在最坏的情况下需要使用 lg(N!)~NlgN 次比较。

贴一下完整的 PPT 截图,一目了然:

在这里插入图片描述

证明:

  • 假设数组由N个不同的值 a1 到 aN 组成。
  • 最坏的情况由决策树的 高度 h 决定。
  • 高度为 h 的二叉树最多有 2h 叶子节点。
  • N! 不同的排序 => 至少 N! 叶子节点。

根据书里面的说明再完善一下:

从比较树观察得到的第一个重要结论是这棵树应该至少有 N! 个叶子结点,因为 N 个不同的主键会有 N! 种不同的排列。


二叉树的一个基本的组合学性质就是高度为 h 的树最多只可能有 2h 个叶子结点,拥有 2h 个结点的树是完美平衡的,或称为完全树。

在这里插入图片描述

5:稳定性

这一部分回顾了目前所讲到的四种算法:插入排序、选择排序、希尔排序以及归并排序。

Q:哪些算法是稳定的?
A:插入排序和归并排序。(选择排序和希尔排序不稳定。)

5.1:插入排序:稳定

在这里插入图片描述

插入排序中,相同的值不会越过彼此。

通常而言,看一个排序是否稳定,一般是看它是否有长距离的交换可能使得一条记录越过某一条相同值的记录。

5.2:选择排序:不稳定

在这里插入图片描述

5.3:希尔排序:不稳定

在这里插入图片描述

5.4:归并排序:稳定

只要归并操作是稳定的,那么归并排序算法就是稳定的;操作是否稳定,取决于代码怎么写。

在这里插入图片描述

(完)

http://www.yayakq.cn/news/839402/

相关文章:

  • asp网站部署 iis7亚马逊注册没有公司网站怎么做
  • 建设银行融信通网站电脑上必玩的游戏
  • 企业网站公司单位有哪些企业推广软文
  • 网站开发研发工程师岗位职责公司比较好
  • 免费的图片做视频在线观看网站seo策略主要包括
  • 营销型网站建设公司地址甘肃路桥建设集团网站
  • 网站mssql 导出数据tornado网站开发 教程
  • 陇西网站建设公司直播盒子
  • 做研学的企业网站做网站多少钱特惠西宁君博s
  • 给小学生做家教的网站哪个网站可以免费做H5
  • wap网站开发怎样做论坛网站
  • 完成一个个人主页网站的制作网页升级跳转自动刷新
  • 营销型网站的建设规划php开源免费网站模板
  • 长春移动端网站设计网站建设哪家效果好
  • 威海网站建设价格家庭装什么宽带最划算
  • 青海省建设厅官方网站建设云舆情分析是个什么行业
  • 网站建设注意什么网站开发 常德
  • 枣庄网站设计1网站免费建站
  • 电子商务网站建设的课程论文好的网页制作公司有哪些
  • 网站优化排名易下拉软件金华市建设局婺城分局网站
  • 昆明网站制作定制公司最新手游2022首发排行
  • 个人网站导航模版汽车网站建设可行性分析
  • 电子商务网站建设与维护论文网上免费推广
  • 台州建网站公司wordpress中文版源码
  • 家用机做网站服务器网站开发与网页设计大作业
  • 上海门户网站建设方案营销平台
  • 网站制作寻找客户淘宝详情页设计一个多少钱
  • 大家做公司网站 都是在哪里做的深圳万户网络科技有限公司
  • 重庆网站建设只选承越你们网站做301
  • 做简历的网站 知乎那个网站平台可以做兼职