写在前面的话

今天开始也要看看算法导论这本书了,开个长久的帖子记录一下学习笔记以及感悟,也希望这是一种变相督促自己学习的办法:)。
之前也读书的时候算法这里也只学过数据结构,但是感觉自己只学会了部分思想,真要去leetcode去刷算法题未免太过吃力,看到别人推荐这本书,就找来了一本pdf版的好好学习一下,希望为时不晚。

封面镇楼

插入排序

输入:n个数的一个序列:x1,x2,x3,x4…xn;
输出:满足升序排序,要求前面的数字都比后面小

借用原书中的一张图来代表这个排序的意思


  • 图解:如上图,扑克牌应该人人都玩过,当拿到n张牌后,你也已经排序好了。如果此时再拿到一张牌,又想让一手的扑克牌有序,你会选择怎么把新拿到的那张牌塞进牌中呢?
  • 大多数人办法是,从后面开始比较,如果第n张牌比想塞的牌大,就往前继续比较,如果倒数第二张(n-1)还是大,就继续往前,直到碰到一张的牌。如上图的7插到5后面,而不是10的后面。

用一张图动态表示(转自菜鸟教程,侵删):

放上一个C语言:

void insertion_sort(int arr[], int len){int i,j,key;for (i=1;i<len;i++){key = arr[i];j=i-1;while((j>=0) && (arr[j]>key)) {arr[j+1] = arr[j];j--;}arr[j+1] = key;}
}

Java:

void insertionSort(byte[] array) {byte key;int j;for (int i = 1; i < array.length; i++) {key = array[i];j = i - 1;while (j >= 0 && array[j] > key) {array[j + 1] = array[j];j--;}array[j + 1] = key;}}

算法导论学习--学习笔记0527相关推荐

  1. 《算法导论》读书笔记(七)

    <算法导论>读书笔记之第16章 贪心算法-活动选择问题 前言:贪心算法也是用来解决最优化问题,将一个问题分成子问题,在现在子问题最优解的时,选择当前看起来是最优的解,期望通过所做的局部最优 ...

  2. 网易公开课-MIT麻省理工学院《算法导论》 学习笔记(1)

    本文为麻省理工学院<算法导论>课程第一讲的学习笔记. 网易云课堂上该课程的网站为http://open.163.com/special/opencourse/algorithms.html ...

  3. 麻省理工公开课《算法导论》学习笔记:第一讲

    主题:简介课程,渐近概念的大局观,插入排序和归并排序,递归式函数时间分析(递归树方法) 教材:<算法导论> 收获:很感动地看到算法分析那个log(n)是为什么出现了,更深层还要听第二讲,若 ...

  4. 算法导论 pdf_学习数据结构和算法最好的书是什么?

    ----------- 通知:如果本站对你学习算法有帮助,请收藏网址,并推荐给你的朋友.由于 labuladong 的算法套路太火,很多人直接拿我的 GitHub 文章去开付费专栏,价格还不便宜.我这 ...

  5. 《算法导论》学习总结 — 2.第一章 第二章 第三章

    上一篇:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html 前三章基本没什么内容,所以合在一起总结. 第一章: 讲了算法( ...

  6. 《算法导论》学习总结 — 21.第16章 贪心算法(1) 基础入门1

    建议先看看前言:http://www.wutianqi.com/?p=2298 连载总目录:http://www.wutianqi.com/?p=2403 说到贪心算法,避免不了于DP对比,所以前面的 ...

  7. 算法设计与分析_算法导论(CLRS)骨灰级笔记分享:目录

    倘若你去问一个木匠学徒:你需要什么样的工具进行工作,他可能会回答你:"我只要一把锤子和一个锯".但是如果你去问一个老木工或者是大师级的建筑师,他会告诉你"我需要一些精确的 ...

  8. 《算法导论》读书笔记--第三章 函数的增长

    好长时间了,继续算法导论. 当输入规模足够大时,并不计算精确的运行时间,倍增常量和低阶项被舍去.我们要研究的是算法的渐近效率,即在输入规模无限量时,在极限中,算法的运行时间如何随着输入规模的变大而增加 ...

  9. 【算法导论】学习笔记——第16章 贪心算法

    贪心算法是使做出的选择看起来都是当前最佳的,期望通过所做的局部最优选择来产生一个全局最优解.其实,这个定义旨在说明贪心算法必须伴随做出最优选择,如moving table,我们选择最大重叠数等等.当然 ...

  10. 《算法导论》学习笔记——快速排序

    快速排序 1.快速排序原理   快速排序是一种应用很广泛的排序算法,与归并排序类似,快速排序也采用了分治策略.对于一个待排序的数组A[p...r]进行快速排序,根据分治思想,可以分为如下三个步骤:   ...

最新文章

  1. 操作系统学习:系统调用与Linux0.12初始化详细流程
  2. 字符类型(Java)
  3. Unet实现图像分割(三)
  4. fsimage文件丢失_Fsimage 与 EditLog定义及合并过程
  5. android 再按一次退出程序
  6. vtk环境搭建(windowsXP/win7,vtk6.0.0+cmake2.8+vs2010)
  7. catalog java,Java Connection getCatalog()方法与示例
  8. redis热点key解决方案_缓存穿透,缓存雪崩,4种解决方案分析
  9. python随堂技术演讲时间表
  10. python中文字体怎么设置_python matplotlib 中文字体设置
  11. 第六次毕业设计任务书
  12. 新东方托福词汇(List 16 ~ List 20)
  13. vue3实现表格单元格可编辑
  14. 天玑800u处理器怎么样,相当于骁龙的多少
  15. Linux + JAVA得到各种格式的文件正文(office文件,PDF,邮件,html,zip等)
  16. 架设个人FTP——ServU
  17. 职场小记-宜信大数据团队
  18. 视频剪辑后期处理软件生态
  19. 第八章 可扩展标记语言XML
  20. JavaScript三目判读男女

热门文章

  1. 基于IMAP的邮件收发系统
  2. 网络管理员掌握的学习方法
  3. 高响应比优先调度算法和短作业优先调度算法
  4. 数据可视化方向的毕业设计详细思路
  5. GB35114—⑤、附 录C
  6. SQL Server修改表结构时,不允许保存更改,阻止保存要求重新创建表的更改
  7. 雷达存在感应器技术,实时感知控制应用,雷达人体探测方案
  8. CloudFlare Full SSL Strict 报错提示 Error 525 SSL handshake failed
  9. java astar_JAVA-Astar算法实现
  10. 蛇优化算法(Snake Optimizer)