
算法学习
雨景_努力学习
这个作者很懒,什么都没留下…
展开
-
数据结构——栈(C语言实现)
目录结构定义结构操作代码实现 结构定义 栈是一种先进后出的数据结构(FILO),类比现实中的例子就是放羽毛球的圆筒,最先放进去的,会最后才拿出来用。栈是一种顺序结构,用一段连续的存储空间存储元素,所以可以用动态数组。使用栈一般都是用于处理具有完全包含关系的问题,例如括号匹配。 数据空间data。动态开辟数组空间。 空间大小size。记录数组空间的大小。 栈顶元素下标top。记录当前栈顶元素在数组中的下标。 结构操作 初始化init()。创建栈并初始化栈空间。 清除栈clear()。清除栈空间。 入原创 2021-01-03 16:41:40 · 668 阅读 · 1 评论 -
数据结构——队列(C代码实现)
目录普通队列结构定义结构操作代码实现循环队列结构定义结构操作代码实现 普通队列 结构定义 队列是一种先进先出FIFO的数据结构,即最先进入队列的数据,也是最先退出队列的,就像排队一样,其结构包括: 存储空间data。队列是用一段连续存储空间存数据的,所以存储空间可以用动态数组实现。 队列容量size。用于记录队列动态数组空间的大小。 队首下标head。用于记录队列的首位元素存储在动态数组的哪个下标中。 队尾下标tail。根据结构操作代码设计的不同,可以用于记录队列末尾元素存储在动态数组的哪个下标中,或原创 2020-12-22 19:44:05 · 740 阅读 · 0 评论 -
数据结构——并查集(C代码实现)
目录结构定义结构操作不同的算法实现Quick-Find算法Quick-Union算法 结构定义 并查集本质上是基于染色的思想,将属于相同集合内的元素染成相同的颜色;一开始所有元素的颜色是不同的,通过合并两个元素的操作,将其中一个元素的颜色染成另一个元素的颜色。 简单地,我们可以使用数组来存元素的颜色状态,因为使用了数组,所以还需要记录数组的大小。 结构操作 初始化并查集init()。创建并初始化并查集的存储空间。 获取元素的颜色find()。返回当前元素的颜色。 合并两个元素merge()。将其原创 2020-12-14 16:55:08 · 583 阅读 · 0 评论 -
数据结构——堆(C代码实现)
目录堆的结构定义堆的结构操作大顶堆代码实现 堆的结构定义 堆本质上可以看作是一棵完全二叉树,如下图所示: 存储数据的空间为一段连续的空间,类似于数组,实际上也确实是用动态数组存的数据,假设根结点下标为i,则它的左孩子下标为2 * i + 1,右结点下标为2 * i + 2。上图表示为数组则是这样的:heap[13] = {20, 18, 16, 12, 8, 10, 14, 3, 5, 6, 4, 7, 2} 堆的数据空间维护了一种特殊的性质,那就是第一个数一定是所有数据最大或最小的,首原创 2020-12-07 16:47:59 · 276 阅读 · 0 评论 -
二分查找详细讲解(C 代码演示)
文章目录引言普通二分查找特殊二分查找000111型111000型特殊二分查找的应用——二分答案 引言 二分查找是时间复杂度为O(logn)的简单算法,适用于在有序的数组中查找想要的数据,这里的数组也可以换成具有单调性的函数,把函数的传入值类比成数组的下标,函数的返回值类比成数组内这个下标存储的元素,那么函数就是不用开辟额外空间存储元素的压缩数组。 普通二分查找 假设数组中数据的值是单调递增的,定义左边界left和右边界right,从中间下标mid =(left + right)/ 2开始搜索目标原创 2020-11-30 18:11:56 · 751 阅读 · 0 评论