随笔分类 - 算法与数据结构
这里记录我的算法与数据结构的学习笔记
摘要:###二分查找法 将被查找的键和子数组的中间键比较。如果被查找的键小于中间键,就在左子数组中继续查找,如果大于就在右子数组中继续查找,否则中间键就是我们要找的键。 思路分析 首先确定该数组的中间的下标 mid = (left + right) / 2 然后让需要查找的数 findVal 和 arr[
阅读全文
摘要:###堆排序 以下内容来源于尚硅谷韩顺平老师笔记: 堆排序是是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,即选择排序的优化 堆 堆是一种完全二叉树,分为大顶堆和小顶堆: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆
阅读全文
摘要:###归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法, 思想: 该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 思
阅读全文
摘要:快速排序(Quicksort)是对冒泡排序的一种改进。 基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 具体过程: 按某个规则以某一个元
阅读全文
摘要:表头:第一个元素表尾:其余元素组成的表长度:包含的元素的个数。这里元素包括原子,子表和子列表。一个元素就是一个长度,不管元素内的长度,如,D=(A,B,C)长度为3。C=(a,(b,(c,d)))长度为2深度:包含括号的长度存储:采用链式, 有两种存储结构:头尾表示法和孩子兄弟表示法见blog具体解
阅读全文
摘要:进出栈的时间复杂度均为O(1)循环顺序队列中索引都进行加1取余运算保证队首(尾)的索引在最大时进行出入队操作后新索引变为最小索引,构成一个循环。(如此时队尾索引为7,队最大容量为8,插入一个队元素,队尾变为新元素,索引变为(7/1)%8=0)循环队列为保证判断队空与队满的条件不冲突,损失一个单元不用
阅读全文
摘要:链表进行插入,删除等操作时,先对链外元素进行链接,再对链表内元素进行操作,保证操作位置不丢失在顺序表中,只要知道结点大小(向量大小(索引下标)*所占空间)和基地址(开始结点的存储地址)就可以求出任意一个结点的存储地址,公式如下LOC(ai)= LOC(a1)+L*(i-1) 1≤i≤n具体见该博客:
阅读全文
摘要:今天刚刚学习的希尔排序,我理解了很久,这是我根据书中内容和博客文章自己的理解,希望对你有帮助 希尔排序 希尔排序:插入排序优化首先它把较大的数据集合分割成若干个小组(逻辑上分组),即h序列,然后对每一个小组分别进行插入排序,此时,插入排序所作用的数据量比较小(每一个小组),插入的效率比较高h序列:按
阅读全文
摘要:这两天的《算法》进入排序的学习后,遇到了一些问题,下面是我自己总结的理解: 冒泡排序:两两相比较遍历数组不断以两两交换的方式找到最值(最大或最小),再从循环中剔除该最值缩小遍历范围继续一次从头至尾的遍历,循环很多次至最终排序完成。选择排序:以一个变量存储下表索引,同冒泡排序一样的两两相比较,但不交换
阅读全文
摘要:在大四不甘于去不好公司的压力下,开始重拾了算法与数据结构的学习,目前学习的是那本Java广为流传的橙皮《算法》。在看了一部分之后,明显发觉有些吃力,根本无法完成预先设定的进度,所以决定再重拾大一大二的简单教程入门的算法与数据结构,巩固一下基础知识,这篇blog就是一篇持续更新的自己的学习时间路线总结
阅读全文

浙公网安备 33010602011771号