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

MIT Introduction to Algorithms 学习笔记(四)

为什么80%的码农都做不了架构师?>>>   hot3.png

lecture 3 Insertion Sort, Merge Sort

1.(插入排序)Insertion sort

162232_ej4D_106593.png

def InsertSort(L):
    if(len(L) == 0 or len(L) == 1):
        return L
        
    tmp = 0
    for i in range(1,len(L)):
        for j in range(i,0,-1):
            if L[j] < L[j - 1] :
                tmp = L[j -1]
                L[j - 1] = L[j]
                L[j] = tmp
                #print("swap:",str(L[j - 1]),str(L[j]))
    
        #print(i,L)        
    return L

2. (归并排序)Merge Sort

162331_QKOv_106593.png

def MergeSort(L):
    if(len(L) == 0 or len(L) == 1):
        return L
    iMid = len(L) // 2
    LL = MergeSort(L[0: iMid])
    RL = MergeSort(L[iMid : len(L)])
    
    return Merge(LL, RL)

def Merge(LL,RL):
    tmpL = []
    
    ilLen = len(LL)
    irLen = len(RL)
    
    ilCount = 0
    irCount = 0
    
    while(ilCount < ilLen and irCount < irLen):
        if(LL[ilCount] <= RL[irCount]):
            tmpL.append(LL[ilCount])
            ilCount = ilCount + 1
        else :
            tmpL.append(RL[irCount])
            irCount = irCount + 1
    if(ilCount != ilLen) :
        while(ilCount < ilLen):
            tmpL.append(LL[ilCount])
            ilCount = ilCount + 1
    if(irCount != irLen):
        while(irCount < irLen):
            tmpL.append(RL[irCount])
            irCount = irCount + 1
    
    return tmpL

 

3. 递归树(Recursion tree)

分析归并算法:

163449_mb6A_106593.png

 

怎么计算出T(n)?使用递归树。

 

163552_4imL_106593.png

转载于:https://my.oschina.net/hyaicc/blog/548581

相关文章:

  • Java 自动装箱与拆箱(Autoboxing and unboxing)
  • Java多线程中wait, notify and notifyAll的使用
  • 用Android Studio构建及运行android app
  • ArchSummit北京2015精彩回顾
  • Ubuntu OS应用Runtime Enviroment
  • [转]如何判断js中的数据类型
  • 武汉Uber优步司机奖励政策(12月21日-12.27日)
  • Java基础学习总结(5)——多态
  • 【CURL】PHP的CURL开发项目最佳实践
  • WordPress 全方位优化指南(上)
  • 光播的一些属性设置
  • iOS Swizzle
  • 我的Python 学习之旅 从0开始的小白
  • excel文件怎么使用php进行处理
  • MongoDB常用命令
  • 深入了解以太坊
  • [deviceone开发]-do_Webview的基本示例
  • Fastjson的基本使用方法大全
  • FineReport中如何实现自动滚屏效果
  • iOS 颜色设置看我就够了
  • java8-模拟hadoop
  • JavaScript 基本功--面试宝典
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • spring boot 整合mybatis 无法输出sql的问题
  • 初探 Vue 生命周期和钩子函数
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端面试之CSS3新特性
  • 【云吞铺子】性能抖动剖析(二)
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #Linux(Source Insight安装及工程建立)
  • (二)Linux——Linux常用指令
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (未解决)macOS matplotlib 中文是方框
  • (转)LINQ之路
  • .Family_物联网
  • .NET CORE 第一节 创建基本的 asp.net core
  • .Net 高效开发之不可错过的实用工具
  • .NET 回调、接口回调、 委托
  • .NET/C# 的字符串暂存池
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • :not(:first-child)和:not(:last-child)的用法
  • @JSONField或@JsonProperty注解使用
  • [AutoSar]BSW_Com02 PDU详解
  • [C/C++] C/C++中数字与字符串之间的转换
  • [cb]UIGrid+UIStretch的自适应
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [DevOps云实践] 彻底删除AWS云资源
  • [ffmpeg] x264 配置参数解析
  • [Google Guava] 2.1-不可变集合
  • [iOS]如何删除工程里面用cocoapods导入的第三方库
  • [Spark][Python][RDD][DataFrame]从 RDD 构造 DataFrame 例子
  • [UE4]Montage动画设置Slot
  • [WF4.0 实战] WPF + WCF + WF 打造Hello World(基础篇)
  • [zabbix] zabbix监控其他