算法导论 第一章
算法
    输入--(算法)-->输出
 
解决的问题
    识别DNA(排序,最长公共子序列,) # 确定一部分用法
    互联网快速访问索引
    电子商务(数值算法and数论)
    交通图。。。(图论,旅行社问题)
    拓扑排序 #
 
 
第二章 
2.1插入排序
    
     #p11 伪代码预定留意一下  #(算法导论 第3版 中文)
 
    循环不变式?
        循环 j++
        不变 A[1..j-1] 一直有序
 
     正确性证明:# 套用一下数学归纳法的思路 (这个笔记想重新重视一下数学思路)
           初始化:  j=1                         时 A[1]有序
           保持:     j = n-1,j = n       A[1..j-1] 都有序(n-1 成立 n也成立)
           终止:    j  > A.length         (算法有穷性:(数据结构:严蔚敏 好像是第一章))

def INSERTION_SORT(A):
for j in range(1,len(A)): # ython[,) #算法导论从1开始 python list从0开始
#print(A[j]) #test
key = A[j]
i = j - 1
while i >=0 and A[i] > key:
A[i + 1] = A[i]
i -= 1
A[i + 1] = key if __name__ == '__main__':
A = [5,2,6,1,3]
INSERTION_SORT(A) # 和java 传值相识 c指针?:**p
print(A)
=================== RESTART: F:/python/2_1_insert_sort.py ===================
[1, 2, 3, 5, 6]
 
    环境#win7 python 3.5.1 通过
    @python list 设计和c++STL的array相似(stl源码剖析:侯捷)
 
2.2分析算法
    采用模型:单处理机 随机访问机(random-access machine ,RAM)
   增长级别: O(N**2)
 
2.3分治法
       思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解建立原问题的解
    步骤:分解 解决 归并
归并:
分解 解决
    不断分成1/2处理(似二叉树后续遍历

import decimal
def MERGE(A,p,q,r): #归并
n1 = q - p +1
n2 = r - q
L = []
R = []
for i in range(n1):
L.append(A[p + i]) # 0开始
for j in range(n2):
R.append(A[q + j+1]) #A[q+1 ,r]
L.append(decimal.MAX_EMAX ) #10机制模块64位999999999999999999
R.append(decimal.MAX_EMAX)
i = 0
j = 0
for k in range(p,r+1): #A[p,r]
if L[i] <= R[j]:
A[k] = L[i]
i += 1
else:
A[k] = R[j]
j += 1 def MERGE_SORT(A,p,r): #A[p,r]
if p < r:
q = (p + r)//2
MERGE_SORT(A,p,q)
MERGE_SORT(A,q+1,r)
MERGE(A,p,q,r) if __name__ == '__main__':
A = [5,2,4,7,1,3,2,6]
print(A)
MERGE_SORT(A,0,len(A)-1)
print(A) '''
结果:
============== RESTART: F:\python\algorithms\2_3_merge_sort.py ==============
[5, 2, 4, 7, 1, 3, 2, 6]
[1, 2, 2, 3, 4, 5, 6, 7]
环境:win7 python3.5.1
注意: A区间的选取 python 的list从0开始 我选的是[ , ] '''
 
参考 引用:#这个不知道怎么写- -!
     

算法导论 第一章and第二章(python)的更多相关文章

  1. JavaScript笔记(第一章,第二章)

    JavaScript笔记(第一章,第二章) 第一章: <meta http-equiv="Content-Type" content="text/html; cha ...

  2. 《LINUX内核设计与实现》读书笔记之第一章和第二章

    一.第一章 1. Unix内核的特点简洁:仅提供系统调用并有一个非常明确的设计目的抽象:几乎所有东西都被当做文件可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力进程:创建 ...

  3. Linux内核分析 读书笔记 (第一章、第二章)

    第一章 Linux内核简介 1.1 Unix的历史 Unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目的. 在Unix中,所有东西都被当做文件,这种抽象使对数据和对设备的操作是通过一套相 ...

  4. Unity 游戏框架搭建 2019 (九~十二) 第一章小结&第二章简介&第八个示例

    第一章小结 为了强化教程的重点,会在合适的时候进行总结与快速复习. 第二章 简介 在第一章我们做了知识库的准备,从而让我们更高效地收集示例. 在第二章,我们就用准备好的导出工具试着收集几个示例,这些示 ...

  5. MIT算法导论——第一讲.Analysis of algorithm

    本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记.所有内容均来自MIT公开课Introduction to Algorithms中Charles E. ...

  6. 算法竞赛入门经典_第二章:循环结构程序设计_上机练习_MyAnswer

    习题2-1 位数 输入一个不超过109的正整数,输出它的位数.例如12735的位数是5.请不要使用任何数学函数,只用四则运算和循环语句实现. #include<stdio.h> int m ...

  7. 《Linux内核》课本读书笔记 第一章、第二章

  8. Qt Gui 第一章~第二章

    一.Qt启动 qmake -project; 创建xxx.pro qmake xxx.pro; 生成makefile文件 make:构建该程序,生成可执行文件 运行程序:windows:xxx:mac ...

  9. sql 语句系列(null 值处理)[八百章之第二章]

    查找只存在一个表中的数据 有两张表: EMP: select * from emp DEPT: 他们有共同的属性:deptno 现在要查询EMP 中的deptno不等于DEPTNO的deptno项. ...

随机推荐

  1. Jquery | 基础 | jQuery表单对象属性过滤选择器

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用jQuery表单对象属性 ...

  2. only-child选择器

    :only-child选择器用于匹配属于某一个父元素的唯一子元素的元素,也就是说,如果某个父元素仅有一个子元素,则使用  :only-chlid选择器  ,可以选择这个子元素

  3. LightOj 1088 - Points in Segments (二分枚举)

    题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1088 题目描述: 给出一个n位数升序排列的数列,然后q个查询,每个查询问指定 ...

  4. Calculation 2 HDU - 3501

    https://vjudge.net/problem/HDU-3501 不会做啊...记一下做法 做法是计算小于n且与n互质的数的和:根据如果gcd(i,n)==1,那么gcd(n-i,n)==1,对 ...

  5. sendRedirect和forward区别

    参考来源:http://www.educity.cn/develop/158970.html 12.6.4  sendRedirect()和forward()方法的区别 HttpServletResp ...

  6. 浅谈Java中static作用--转

    static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何 ...

  7. Java三大特性之---封装

    封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保 ...

  8. JAVA常用知识总结(六)——Mybatis

    为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里? Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取, ...

  9. 简单记录下@RequestBody(关于它和@RequestParam接收数据方式的拓展)

    内容参考自博客:https://blog.csdn.net/ff906317011/article/details/78552426 这个标注是用来注释controller中的请求方法中的参数的,那么 ...

  10. AJPFX关于java中的方法

    java中的方法和c语言中的函数类似,是新手入门面向对象之前的内容最大的难关如何写方法        1,明确返回值类型        2,明确参数列表 * 修饰符:目前就用 public stati ...