数据结构
文章平均质量分 69
better-code
分享嵌入式软硬件知识
展开
-
【数据结构】单链表的尾插法
尾插法是一种在链表末尾插入新元素的方法,它的核心思想是保持链表的尾部指针(或称为尾节点),这样可以在常数时间内完成尾部插入操作。在双向链表或循环链表中,尾插法还需要维护额外的指针,例如前驱指针和循环链表的头节点指针,但基本思想是相同的:找到尾部并在其后面插入新节点。尾插法的优点是插入操作的时间复杂度为O(1),因为不需要遍历链表来找到插入位置,只需要修改尾部节点的。:将新节点插入到当前尾部节点的后面,并更新尾部指针(或尾部节点的。指针)以指向新节点。原创 2024-04-22 23:48:08 · 522 阅读 · 0 评论 -
【排序算法】快速排序
快速排序的基本思想是选择一个基准元素(通常是序列中的第一个元素),然后将序列中的其他元素分为两个子序列,一个子序列中的所有元素都比基准元素小,另一个子序列中的所有元素都比基准元素大。快速排序的效率在平均状况下是非常高的,其时间复杂度为O(n log n),但最坏情况下的时间复杂度为O(n^2)。最坏情况通常是由于基准元素的选择不当造成的,例如序列已经是有序的情况下,选择第一个元素作为基准。快速排序是一个不稳定的排序算法,因为在排序过程中,相等的元素的顺序可能会改变。原创 2024-04-22 23:22:17 · 582 阅读 · 0 评论 -
【数据结构】霍夫曼树
霍夫曼树(Huffman Tree),又称最优二叉树,是一种带权路径长度最短的二叉树。在霍夫曼树中,叶子节点的权值通常代表字符出现的频率,非叶子节点的权值是其子节点权值的和。霍夫曼树广泛应用于数据压缩,尤其是霍夫曼编码,它是一种基于字符出现频率的变长前缀编码。:首先,将给定的字符和它们对应的权值(频率)放入一个集合中。:每次从集合中选出两个具有最小权值的节点,将它们合并成一个新节点,新节点的权值是这两个子节点权值的和。:将选出的两个最小权值节点从集合中删除,并将新创建的节点添加到集合中。原创 2024-04-21 22:27:18 · 655 阅读 · 0 评论 -
【数据结构】冒泡排序
冒泡排序的平均和最坏时间复杂度都是 O(n^2),其中 n 是数组的长度。这是因为它需要比较所有相邻元素对,并且在最坏的情况下,每个元素都需要移动到数组的另一端。不过,冒泡排序有一个优点,就是它是稳定的排序算法,即相等的元素在排序后保持它们的原始顺序。此外,如果在一轮比较中没有发生任何交换,冒泡排序可以提前终止,这提供了一种优化手段。算法的每一步都会比较相邻的两个元素,如果它们的顺序错误(即第一个元素比第二个元素大),则交换它们。这样,每经过一轮比较和交换,数组中最大的元素就会“冒泡”到数组的最后位置。原创 2024-04-21 22:19:51 · 545 阅读 · 0 评论 -
【数据结构】插值排序
插值排序(Interpolation Search)是一种用于在有序数组中查找特定元素的搜索算法。它是二分查找算法的改进版本,通过使用当前查找值与数组中值的比例来估计下一次查找的位置,而不是简单地取中点。原创 2024-04-20 23:05:34 · 1049 阅读 · 0 评论 -
【数据结构】选择排序
选择排序的工作原理是在每次迭代中找到未排序部分的最小元素,并将其与未排序部分的第一个元素交换。这样,每次迭代后,排序部分的边界就会向右移动一位。它的工作原理是不断地选择剩余元素中的最小(或最大)元素,放到已排序的序列的末尾,直到排序完整个序列。原创 2024-04-20 22:57:50 · 565 阅读 · 0 评论 -
哈希表查找
哈希表查找的基本使用方法原创 2024-04-19 20:13:15 · 1097 阅读 · 0 评论 -
【数据结构】分块查找
1.索引表分块查找(也称为索引顺序查找)是一种改进的顺序查找方法,它将查找表,并要求,但块与块之间不要求有序。每个块内的最大元素构成一个索引表。分块查找的过程是先查找索引,确定待查元素所在的块,然后在该块内进行顺序查找。分块查找的平均查找长度介于顺序查找和二分查找之间,适用于查找次数相对较少,而插入和删除操作频繁的线性表。:首先将查找表分成若干个块,每个块内的元素不必有序,但块间必须是有序的,即第i块的每个元素都必须小于第i+1块的所有元素。原创 2024-04-19 19:44:24 · 468 阅读 · 0 评论 -
【数据结构】二分查找
二分查找(Binary Search)是一种高效的查找算法,它在一个有序数组中查找特定的元素。二分查找的工作原理是不断将数组分成两半,比较中间元素与目标值,根据比较结果选择左半部分或右半部分继续查找,直到找到目标元素或数组被完全分割。,其中n是数组的长度。这是因为每次查找都会将查找范围减半,所以查找的次数与n的对数成正比原创 2024-04-18 21:42:32 · 578 阅读 · 2 评论 -
【数据结构】队列的使用方法
队列(Queue)是另一种基本的线性数据结构,它允许在一端进行插入操作,而在另一端进行删除操作。队列的特点是先进先出(First In First Out, FIFO),即最先进入队列的元素最先被取出。队列可以用数组来实现,也可以用链表来实现。用数组实现的队列称为顺序队列,用链表实现的队列称为链式队列。原创 2024-04-18 20:42:17 · 1226 阅读 · 0 评论 -
【数据结构】栈的使用
栈(Stack)是一种基本的数据结构,它是一种线性表,但只允许在固定的一端进行插入和删除操作,这一端称为栈顶(top)。栈的特点是后进先出(Last In First Out, LIFO),即最后进入栈的元素最先被取出。栈可以用数组来实现,也可以用链表来实现。用数组实现的栈称为顺序栈,用链表实现的栈称为链式栈。原创 2024-04-17 21:21:13 · 1187 阅读 · 1 评论 -
【数据结构】 单向链表的实现
单向链表的基本使用。原创 2024-04-17 21:02:33 · 528 阅读 · 2 评论 -
【数据结构】顺序表的实现(C语言)
顺序表的实现方法原创 2024-04-16 20:35:12 · 605 阅读 · 0 评论