算法导论学习--学习笔记0527
写在前面的话
今天开始也要看看
算法导论
这本书了,开个长久的帖子记录一下学习笔记以及感悟,也希望这是一种变相督促自己学习的办法:)。
之前也读书的时候算法这里也只学过数据结构,但是感觉自己只学会了部分思想,真要去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相关推荐
- 《算法导论》读书笔记(七)
<算法导论>读书笔记之第16章 贪心算法-活动选择问题 前言:贪心算法也是用来解决最优化问题,将一个问题分成子问题,在现在子问题最优解的时,选择当前看起来是最优的解,期望通过所做的局部最优 ...
- 网易公开课-MIT麻省理工学院《算法导论》 学习笔记(1)
本文为麻省理工学院<算法导论>课程第一讲的学习笔记. 网易云课堂上该课程的网站为http://open.163.com/special/opencourse/algorithms.html ...
- 麻省理工公开课《算法导论》学习笔记:第一讲
主题:简介课程,渐近概念的大局观,插入排序和归并排序,递归式函数时间分析(递归树方法) 教材:<算法导论> 收获:很感动地看到算法分析那个log(n)是为什么出现了,更深层还要听第二讲,若 ...
- 算法导论 pdf_学习数据结构和算法最好的书是什么?
----------- 通知:如果本站对你学习算法有帮助,请收藏网址,并推荐给你的朋友.由于 labuladong 的算法套路太火,很多人直接拿我的 GitHub 文章去开付费专栏,价格还不便宜.我这 ...
- 《算法导论》学习总结 — 2.第一章 第二章 第三章
上一篇:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html 前三章基本没什么内容,所以合在一起总结. 第一章: 讲了算法( ...
- 《算法导论》学习总结 — 21.第16章 贪心算法(1) 基础入门1
建议先看看前言:http://www.wutianqi.com/?p=2298 连载总目录:http://www.wutianqi.com/?p=2403 说到贪心算法,避免不了于DP对比,所以前面的 ...
- 算法设计与分析_算法导论(CLRS)骨灰级笔记分享:目录
倘若你去问一个木匠学徒:你需要什么样的工具进行工作,他可能会回答你:"我只要一把锤子和一个锯".但是如果你去问一个老木工或者是大师级的建筑师,他会告诉你"我需要一些精确的 ...
- 《算法导论》读书笔记--第三章 函数的增长
好长时间了,继续算法导论. 当输入规模足够大时,并不计算精确的运行时间,倍增常量和低阶项被舍去.我们要研究的是算法的渐近效率,即在输入规模无限量时,在极限中,算法的运行时间如何随着输入规模的变大而增加 ...
- 【算法导论】学习笔记——第16章 贪心算法
贪心算法是使做出的选择看起来都是当前最佳的,期望通过所做的局部最优选择来产生一个全局最优解.其实,这个定义旨在说明贪心算法必须伴随做出最优选择,如moving table,我们选择最大重叠数等等.当然 ...
- 《算法导论》学习笔记——快速排序
快速排序 1.快速排序原理 快速排序是一种应用很广泛的排序算法,与归并排序类似,快速排序也采用了分治策略.对于一个待排序的数组A[p...r]进行快速排序,根据分治思想,可以分为如下三个步骤: ...
最新文章
- 操作系统学习:系统调用与Linux0.12初始化详细流程
- 字符类型(Java)
- Unet实现图像分割(三)
- fsimage文件丢失_Fsimage 与 EditLog定义及合并过程
- android 再按一次退出程序
- vtk环境搭建(windowsXP/win7,vtk6.0.0+cmake2.8+vs2010)
- catalog java,Java Connection getCatalog()方法与示例
- redis热点key解决方案_缓存穿透,缓存雪崩,4种解决方案分析
- python随堂技术演讲时间表
- python中文字体怎么设置_python matplotlib 中文字体设置
- 第六次毕业设计任务书
- 新东方托福词汇(List 16 ~ List 20)
- vue3实现表格单元格可编辑
- 天玑800u处理器怎么样,相当于骁龙的多少
- Linux + JAVA得到各种格式的文件正文(office文件,PDF,邮件,html,zip等)
- 架设个人FTP——ServU
- 职场小记-宜信大数据团队
- 视频剪辑后期处理软件生态
- 第八章 可扩展标记语言XML
- JavaScript三目判读男女