![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 92
倔强的石头_
百尺竿头 更进一步
展开
-
【数据结构与算法】希尔排序:基于插入排序的高效排序算法
希尔排序(Shell Sort)是插入排序的一种更高效的改进版本,也称为缩小增量排序。希尔排序由Donald Shell于1959年提出,并在其发表的论文“A high-speed sorting procedure”中详细描述了该算法。希尔排序的直接灵感来源于插入排序,但它在插入排序的基础上进行了显著的改进,旨在提高排序效率,特别是针对大规模数据集。原创 2024-07-15 08:49:37 · 1550 阅读 · 41 评论 -
【数据结构与算法】插入排序:原理、实现与分析
在众多排序算法中,插入排序作为一种简单直观的排序方法,虽然在大规模数据集上可能不是最高效的选择,但其独特的优势使得它在某些场景下仍然非常有用。插入排序的基本思想与我们日常生活中整理书籍或卡片的方式非常相似:将未排序的部分逐一取出,然后在已排序的部分中找到合适的位置插入。这种直观的操作方式使得插入排序易于理解和实现,成为学习排序算法时的基础课程。原创 2024-07-15 08:48:34 · 1039 阅读 · 18 评论 -
【数据结构与算法】详解二叉树下:实践篇————通过链式结构深入理解并实现二叉树
在计算机科学中,二叉树是一种重要的数据结构,它以其独特的结构和性质在数据存储、搜索和算法设计中发挥着重要作用。链式结构作为二叉树的一种常见表示方式,通过节点间的指针连接,实现了对二叉树的高效存储和访问。原创 2024-07-08 08:01:22 · 2481 阅读 · 65 评论 -
【数据结构与算法】详解二叉树 上:理论篇——二叉树的基本概念与性质
二叉树是一种重要的树形数据结构,每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树具有广泛的应用场景和多种特殊的类型,如满二叉树、完全二叉树、二叉搜索树和平衡二叉树等。二叉树的结构简单清晰,操作灵活,因此在计算机科学和软件工程领域有着广泛的应用。通过遍历二叉树,我们可以高效地执行各种操作,如搜索、排序、插入和删除等。原创 2024-07-08 07:49:58 · 1530 阅读 · 32 评论 -
【数据结构与算法】利用堆结构高效解决TopK问题
TopK问题:在给定的一组数据或数据流中,找出最大的K个元素或最小的K个元素。使用堆解决TOPK问题在时间复杂度、空间复杂度、算法效率等方面都具有显著优势,是一种高效且实用的算法策略。原创 2024-07-02 23:39:06 · 1015 阅读 · 34 评论 -
【数据结构与算法】堆排序算法原理与实现:基于堆实现的高效排序算法
堆排序算法是一种高效且实用的排序算法,它通过利用堆数据结构的特点和性质,实现了对数据的高效排序。在实际应用中,我们可以根据问题的特点选择使用堆排序算法,以提高程序的性能和效率。原创 2024-07-02 11:38:07 · 1586 阅读 · 38 评论 -
【数据结构与算法】探索数组在堆数据结构中的妙用:从原理到实现
堆是一种特殊的树形数据结构,其每个节点的值都大于或等于(大顶堆)或小于或等于(小顶堆)其子节点的值。在计算机科学中,堆常用于实现优先级队列、堆排序等算法。本文将探讨如何使用数组实现堆,并分析其原理、实现细节以及应用场景。原创 2024-07-01 10:24:43 · 1440 阅读 · 12 评论 -
【数据结构与算法】详解循环队列:基于数组实现高效存储与访问
循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。相比于传统的队列实现,循环队列能够更有效地利用存储空间,并在数组大小固定的情况下实现队列的无限循环。在本文中,我们将详细探讨如何使用数组来实现循环队列,并分析其优势和应用场景。原创 2024-06-24 00:05:56 · 1346 阅读 · 65 评论 -
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
使用两个队列(Queue)实现栈(Stack)的功能是一种常见的数据结构练习。栈是一种后进先出(LIFO)的数据结构,而队列则是先进先出(FIFO)的。解题的关键就在于如何通过巧妙地使用两个队列的先进先出,来可以模拟栈的后进先出行为。原创 2024-06-24 00:04:27 · 1796 阅读 · 15 评论 -
【链表专题】深入探索链表:文章索引与知识架构(链表的概念、实现、应用、经典例题大合集)
本文旨在为读者提供一个理论与实践相结合的链表学习指南,帮助大家系统地掌握链表的核心知识,并在实际编程中灵活运用。让我们一起踏上这场链表探索之旅吧!原创 2024-06-19 21:11:25 · 1507 阅读 · 34 评论 -
【数据结构与算法】冒泡排序:简单易懂的排序算法解析
冒泡排序,作为一种简单的排序算法,其核心思想是通过不断交换相邻两个元素的位置,使得每一轮迭代后,当前未排序部分的最大值(或最小值,取决于排序的方向)能够“冒”到序列的一端。尽管其时间复杂度在大数据集上并不理想,但冒泡排序在理解算法的基本思想和调试教学等方面仍具有不可忽视的价值。原创 2024-06-18 21:49:10 · 1229 阅读 · 9 评论 -
【数据结构与算法】使用单链表实现队列:原理、步骤与应用
队列(Queue)是一种特殊类型的线性数据结构,它遵循特定的操作顺序。队列的基本操作通常是在一端添加元素(称为入队或enqueue),在另一端移除元素(称为出队或dequeue)。这种操作特性使得队列符合“先进先出”(FIFO, First In First Out)的原则。队列提供了一种有效的方式来管理和处理需要按照特定顺序执行的任务或数据项。通过使用队列,可以确保数据项按照它们被接收或生成的顺序进行处理,这是许多应用中非常关键的要求。原创 2024-06-10 00:23:20 · 1894 阅读 · 58 评论 -
【数据结构与算法】使用数组实现栈:原理、步骤与应用
栈是一种后进先出(LIFO, Last In First Out)的数据结构。栈是一种只能在一端进行插入和删除操作的线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端称为栈底(bottom)。栈中没有元素时,称为空栈。栈的基本操作包括:push(入栈)、pop(出栈)、peek(查看栈顶元素)和isEmpty(判断栈是否为空)等。原创 2024-06-10 00:05:19 · 1697 阅读 · 30 评论 -
【数据结构/C语言】深入理解 双向链表
双向链表是一种常见的数据结构,与单向链表类似,但它允许我们从两个方向遍历链表:向前和向后。每个节点包含三个部分:一个数据元素和两个指针,一个指向链表中的前一个节点,另一个指向链表中的下一个节点。一般情况下,我们所说的双向链表指的是带头节点,双向,循环链表,以下若无特殊说明,均代表此含义。原创 2024-05-20 17:49:29 · 1638 阅读 · 24 评论 -
【数据结构与算法】深入理解 单链表
单链表是一种基本的线性数据结构,它通过链式存储方式而非连续的内存位置来存储元素。(逻辑上连续,物理上不一定连续)在单链表中,每个元素(或称为节点)包含两部分:数据域和指针域。数据域用于存储实际的数据,而指针域则存储指向下一个节点的地址。这样,每个节点都链接到列表中的下一个节点,形成一个链条。本篇文章要介绍的是无头结点,单向,不循环链表,即通常我们所熟知单链表,以下如无特殊说明,均代表此含义。原创 2024-05-07 01:55:24 · 1241 阅读 · 17 评论 -
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。时间复杂度为 O(log2n) 也就是说查找的最大次数为log2n。缺点:必须采用顺序存储结构,,必须按关键字大小有序排列。原创 2023-12-14 21:14:32 · 755 阅读 · 1 评论