排序算法是最基础的一类算法。主要排序算法包括选择排序、插入排序、冒泡排序、合并排序、堆排序和快速排序。把这些排序算法全部实现一边,再把《算法导论》对应章节后面的习题做一遍,确实是系统学习算法的一个不错的开端。 选择排序 选择排序的想法很简单,把需要排序的数组看成一堆扑克牌:先查一遍,抽出最小 ...
. 写在前面 本篇博文是学习算法导论的第一次记录,主要想介绍如何去证明算法的正确性 如何去评判一种算法的好坏 以及如何去改进算法。 . 从插入排序说起 插入排序 insert sort 是一种十分常见的算法,我们在生活中可能就经常在使用 玩扑克。考虑我们抓牌时的场景。首先,你的右手 不考虑左撇子 会不断从桌上拿起一张扑克,然后从左往右 或从右往左 依次观察左手扑克序列中各个牌面的大小,直到找到一 ...
2015-09-05 02:04 0 2017 推荐指数:
排序算法是最基础的一类算法。主要排序算法包括选择排序、插入排序、冒泡排序、合并排序、堆排序和快速排序。把这些排序算法全部实现一边,再把《算法导论》对应章节后面的习题做一遍,确实是系统学习算法的一个不错的开端。 选择排序 选择排序的想法很简单,把需要排序的数组看成一堆扑克牌:先查一遍,抽出最小 ...
【例题传送门:caioj1461】 【EXKMP】最长共同前缀长度 【题意】给出模板串A和子串B,长度分别为lenA和lenB,要求在线性时间内,对于每个A[i](1<=i<=le ...
heap的定义:如果数组a[1,....n]满足:a[i]>a[2*i] && a[i]>a[2*i+1],1<=i<=n/2,那么就是一个heap,而且是ma ...
用了几个月磕磕绊绊的总算把《算法导论》一书看完了,在此写篇博客总结一下学习到的知识。 首先先放上《算法导论》的思维导图: 由于本人的理解能力有限,故部分较难懂的内容没有加入到该思维导图中。 1.排序 排序问题是我们日常生活中经常遇到的一个问题,因此算法导论也把排序作为整个算法介绍 ...
重读<算法导论> 记得多年前学数据结构的时候作为教材的延伸读物我拜读了<算法导论>,当时有选择的读了大约2/3的东西,只学理论和算法实在枯燥,看书之余动手写了其中的一些算法,但是由于实在不知道这些知识有什么用处,剩余的1/3大部分是一些具体的理论推导和稍微复杂的算法 ...
《算法导论》读书笔记之第1章 算法在计算机中的作用 本章是本书的开篇,介绍了什么是算法,为什么要学习算法,算法在计算机中的地位及作用。 算法(algorithm)简单来说就是定义良好的计算机过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出。即算法就是一系列的计算步骤 ...
1. 简介 在之前我们学习了红黑树,今天再学习一种树——B树。它与红黑树有许多类似的地方,比如都是平衡搜索树, 但它们在功能和结构上却有较大的差别。 从功能上看,B树是为磁盘或其他存储设备设计的, ...
1. 分治法:分治模型在每层递归的时都有三个步骤: a.分解原问题为若干个子问题,这些子问题是原问题的规模较小的实例; b. 解决这些子问题,递归地求解各子问题的规模足够小,则直接求解; c. 合并这些子问题的解 成 原问题的解。 2. 归并排序算法完全遵循分治模式 ...