二、Merge sort

1 问题

在这里插入图片描述

2 算法

2.1 伪代码

在这里插入图片描述
在这里插入图片描述

2.2 算法思想

在这里插入图片描述

2.3 手工演示

在这里插入图片描述

2.4 Python实现

# -*- coding: utf-8 -*-
import sysdef merge(A, p, q, r):n1 = q - p + 1n2 = r - qL = [0] * (n1 + 2)R = [0] * (n2 + 2)for i in range(1, n1+1):L[i] = A[p+i-1]for j in range(1, n2+1):R[j] = A[q+j]L[n1+1] = 65536R[n2+1] = 65536i = 1j = 1for k in range(p, r+1):if L[i] <= R[j]:A[k] = L[i]i = i + 1else:A[k] = R[j]j = j + 1def merge_sort(A, p, r):if p < r:q = (p + r) // 2merge_sort(A, p, q)merge_sort(A, q+1, r)merge(A, p, q, r)if __name__ == '__main__':input_str = sys.stdin.readline().split()A = list(map(int, input_str))A.insert(0, 'x')    # 为了使数组从1开始n = len(A) - 1print('Before sort:')print(A[1:])print('After sort:')merge_sort(A, 1, n)print(A[1:])

3 算法分析

在这里插入图片描述
在这里插入图片描述
怎样解这个递归式子?书中借用“tree”这种结构做算法分析,下一节的master定理也是用“tree”来分析的,这种分析方法,贯穿了整个《算法导论》全书,是非常有艺术性和创造性的一种方法,本小节只用“tree”直观说明,严谨一些的数学细节见下一节的master定理。
在这里插入图片描述
关于这个tree有一些说明:

  1. 树的高度h=lg(n)h=lg(n)h=lg(n)
  2. 叶子结点个数#leaves=n\#leaves=n#leaves=n
  3. 非叶子结点表示merge所花费的时间,并且每一行所花费的时间总和都是cncncn,叶子结点表示排序一个数字所花费的时间Θ(1)\Theta(1)Θ(1),最后一行排序每一个数字所花费的总时间是Θ(n)\Theta(n)Θ(n)
  4. 把所有的结点加起来T(n)=h∗(cn)+Θ(n)=Θ(nlgn)T(n)=h*(cn)+\Theta(n)=\Theta(nlgn)T(n)=h(cn)+Θ(n)=Θ(nlgn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cglib实现动态代理

对目标方法实现前置或者后置增强&#xff0c; 是在程序动态运行时加入增强方法的。 1. 目标类 package com.lovely.proxy.cglib;/*** 目标类* author echo lovely* date 2020/7/26 15:20*/ public class Target {public void save() {System.out.println("sve running..…

fragment嵌套,viewpager嵌套 不能正确显示

转帖&#xff1a;http://blog.csdn.net/mybook1122/article/details/24003343 通常为 viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentsList)); 替换为 mPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), fra…

三、递归树分析法

1 问题 2 解决思路 使用递归树猜想一个上界&#xff0c;使用归纳法证明上界也是下界。 2.1 使用递归树&#xff08;recursion tree&#xff09;猜想结论&#xff08;不严谨&#xff09; 使用递归树两点&#xff1a;1⃣️逐行展开&#xff1b;2⃣️逐行相加&#xff1b; 逐行…

Linux文件查看/编辑方法介绍

转载:https://www.centos.bz/2011/10/linux-file-view-edit/ cat 命令介绍 cat 命令的原含义为连接(concatenate)&#xff0c; 用于连接多个文件内容并输出到标准输出流中&#xff08;标准输出流默认为屏幕&#xff09;。实际运用过程中&#xff0c;我们常使用它来显示文件内容…

html5input表单标签新属性

初探h5一&#xff0c;h5 新增表单类型二&#xff0c;新增表单属性三&#xff0c;code demo一&#xff0c;h5 新增表单类型 •email 邮箱地址•url 网络地址•number 数字框•range 滑块•Date pickers (date, month, week, time, datetime, datetime-local) 日期时间框•search…

关于java的JIT知识

1.JIT的工作原理图 工作原理 当JIT编译启用时&#xff08;默认是启用的&#xff09;&#xff0c;JVM读入.class文件解释后&#xff0c;将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码。 通常javac将程序源码编译&#xff0c;转换成java字节码&#xff0c;JVM通过解释…

Storage 使用

关于web项目数据存储1. 存储种类2. localStorage/sessionStorage2.1 概念2.2 api的使用3. 学生curd测试localStorage针对客户端存储讲 ——storage1. 存储种类 1. 分为服务器端和客户端的存储 2. 服务器端&#xff1a;1. 内存存储(临时)application session request pageConte…

信息抽取--新词提取

&#xff08;纯属为了记录自己学习的点滴过程&#xff0c;引用资料都附在参考列表&#xff09; 1 基本概念 什么是新词&#xff08;是什么&#xff09; 新词是一个相对的概念&#xff0c;每个人的标准都不一样&#xff0c;所以我们这里定义: 词典之外的词语(OOV)称作新词。 …

spring 基于xml方式配置aop

目录什么是aop模拟aop配置什么是aop 什么是aop 作用 在程序运行期间&#xff0c;在不修改源码的情况下对方法进行功能增强 优势 减少重复代码 提高开发效率 并且便于开发2.aop关键概念 模拟aop 目标接口 package com.lovely.proxy.aop;public interface TargetInterface …

word2vec相关资料

blogs&#xff1a; http://www.douban.com/note/323504583/ and http://www.zhihu.com/question/21661274 references: http://arxiv.org/pdf/1310.4546v1.pdf and http://www.fit.vutbr.cz/research/groups/speech/servite/2010/rnnlm_mikolov.pdf转载于:https://www.cnblogs…

信息抽取--关键词提取

&#xff08;纯属为了记录自己学习的点滴过程&#xff0c;引用资料都附在参考列表&#xff09; 1 基本概念 什么是关键词&#xff08;是什么&#xff09; 大略的讲就是文章中重要的单词&#xff0c;而不限于词语的新鲜程度。 什么样的单词是重要的单词&#xff0c;恐怕这是个…

h5离线缓存

html5离线缓存1. 简介1.1 什么是离线缓存1.2 优点1.3 针对对象2. 实现方式2.1 使用3. window.applicationCache对象相关api3.1 属性3.2 事件3.3 方法1. 简介 1.1 什么是离线缓存 HTML5中引入了应用程序缓存&#xff0c;意味着Web应用可以进行数据缓存&#xff0c;并可以在没有…

3389爆破DUBrute_2.1

3389专业爆破 DUBrute_2.1.zip http://pan.baidu.com/s/1pJE0t5L转载于:https://www.cnblogs.com/lieyan/p/3859696.html

信息抽取--短语提取

&#xff08;纯属为了记录自己学习的点滴过程&#xff0c;引用资料都附在参考列表&#xff09; 1 基本概念 短语提取 在信息抽取领域&#xff0c;另一项重要的任务就是提取中文短语&#xff0c;也即固定多字词表达串的识别。短语提取经常用于搜索引擎的自动推荐&#xff0c;文…