数组 实现一个支持动态扩容的数组 实现一个大小固定的有序数组,支持动态增删改操作 实现两个有序数组合并为一个有序数组 链表 实现单链表、循环链表、双向链表,支持增删操作 实现单链表反转 实现两个有序的链表合并为一个有序链表 实现求链表的中间结点 栈 用数组实现一个顺序栈 用链表实现一个链式栈 编程模 ...
分类:
编程语言 时间:
2020-07-05 13:12:20
阅读次数:
89
1.介绍 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 2.基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越 ...
分类:
编程语言 时间:
2020-07-04 15:15:58
阅读次数:
66
通过上一节的学习,我们知道,散列表的查询效率并不能简单说成是O(1)。它跟散列函数、装载因子、散列冲突等地都有关系。 今天我们来学一下,如何设计一个可以应对各种异常情况的工业级散列表,来避免在散列冲突的情况下,散列表性能的急剧下降,并且能抵抗散列碰撞攻击? 下面我们从散列函数、装载因子、散列冲突等方 ...
分类:
编程语言 时间:
2020-07-04 13:09:20
阅读次数:
55
1.数据结构与算法初探 (1)什么是数据结构 a.“摆放图书”例子 b.逻辑结构与存储结构 c.抽象数据类型 (2)什么是算法 算法的定义 算法的特性和设计要求 算法的度量方法(时间复杂度 & 空间复杂度) (3)算法优化——最大子列和 算法1:三重循环 算法2:两重循环 算法3:分治 算法4:在线 ...
分类:
编程语言 时间:
2020-07-04 01:14:59
阅读次数:
83
查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。 定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 分类: 静态查找和动态查找 静态查找:不对表的数据元素和结构进行任何改变。 动态查找:在查找过程同时插入 ...
分类:
编程语言 时间:
2020-07-01 22:02:19
阅读次数:
69
1、什么是哈希表? 哈希表(HashTable)又叫做散列表,是根据关键码值(即键值对)而直接访问的数据结构。也就是说,它通过把关键码映射到表中一个位置来访问记录,以加快查找速度。这个映射函数就叫做散列(哈希)函数,存放记录的数组叫做散列表。 2、为什么哈希表的速度快? 在数据结构中,我们对两种数据 ...
分类:
编程语言 时间:
2020-07-01 09:50:13
阅读次数:
51
本博客总结学习堆排序算法,以一个数组为例,采用大根堆进行升序排序,附有代码实现。 堆排序的思想 堆排序的逻辑是建立在完全二叉树的基础上。 有两个概念必须要了解: 大根堆:每个结点值都大于等于左右孩子结点值 小根堆:每个结点值都小于等于左右孩子结点值 以大根堆为例,将根结点与最后一个结点交换,弹出根结 ...
分类:
编程语言 时间:
2020-06-30 13:03:10
阅读次数:
63
线性表: 定义:由零个或多个数据元素组成的有限序列。 首先他是一个序列,也就是说元素之间是有先来后到 若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继 另外,线性表强调是有限的。 数学语言的定义: 若将线性表记为(a1,...,ai-1,ai,ai+1,...a ...
分类:
编程语言 时间:
2020-06-28 18:41:43
阅读次数:
66
算法效率的度量方法;
函数调用的时间复杂度分析;
常见的时间复杂度;
算法的空间复杂度; ...
分类:
编程语言 时间:
2020-06-27 20:03:38
阅读次数:
119
一、迷宫回溯问题 1.问题 一个7*8的数组模拟迷宫,障碍用1表示,通路使用0表示,给定起点(1,1)和终点(6,5),要求给出起点到终点的通路 2.解题思路 首先,我们需要给程序一个寻向的基本策略,我们先假定寻向顺序为“下-右-上-左”,也就是说从起点出发,先往下走,往下走不通就往右.....以此 ...
分类:
编程语言 时间:
2020-06-27 00:16:22
阅读次数:
76