当前位置: 首页 > 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.tj-hxxt.cn/news/82582.html

相关文章:

  • 网站核检单搜索网站关键词
  • java做动态网站免费大数据查询平台
  • 没学过计算机开始学做网站抖音运营推广策划方案
  • b2b是什么意思啊微信seo什么意思
  • 百度广告联盟推广链接宣城网站seo
  • 班级网站建设思路北京疫情又严重了
  • 官方网站查询电工证郑州百度快照优化
  • 国外效果做的好的网站中国seo第一人
  • 2018做网站开发一个月工资多少网站的优化从哪里进行
  • 做消费信贷网站爱站网爱情电影网
  • 网站运营每天做的怎样加入网络营销公司
  • 微信个人号管理系统seo网站内容优化
  • 怎样网站制作设计此网站服务器不在国内维护
  • 彩票网站有人做吗app推广渠道在哪接的单子
  • 有哪些效果图做的好的网站网络推广发展
  • 怎样做网站认证seo免费外链工具
  • 怎样申请网站域名广告开户
  • 设计素材网站能挣钱吗短视频seo系统
  • 企业门户网站中国燃气河南推广网站
  • 地产网站建设方案常州网站建设书生商友
  • 山西网站制作公司哪家好湖南正规seo公司
  • html5网站带后台关键词排名优化易下拉霸屏
  • 原创wordpress付费主题搜索引擎排名优化方案
  • 网站建设诚信服务东莞网站seo推广
  • 崇明建设镇乡镇府网站百度推广费用一天多少钱
  • 大余做网站建设电商的运营模式有几种
  • 用dw做php网站凡科建站登录
  • 网站建设先进事迹互联网推广渠道有哪些
  • 网站建设的整体流程百度竞价推广出价技巧
  • 产品报价网免费关键词优化排名软件