数据结构
文章平均质量分 94
数据结构的学习
张有志_
code is poetry
展开
-
C语言手撕归并——递归与非递归实现(附动画及源码)
归并排序的基本思想是将待排序的序列分成若干个子序列,每个子序列都是有序的。然后再合并这些子序列形成最终的排序序列。这个过程可以递归地进行,直到所有的子序列都只包含一个元素为止。核心步骤分解:将序列分为两半。解决:递归地对每一半进行排序。合并:将两个已排序的子序列合并成一个单一的有序的序列动画演示归并排序的性能最佳情况平均情况最差情况空间复杂度: 𝑂(𝑛)O(n)稳定性: 归并排序是稳定的排序算法,即相等的元素在排序前后保持原有的相对顺序。递归代码实现。原创 2024-09-08 16:25:39 · 775 阅读 · 0 评论 -
手撕快排——三种实现方法(附动图及源码)
🤖💻👨💻👩💻🌟🚀🤖🌟👨💻👩💻👨💻👩💻🚀是一种高效的排序算法,广泛应用于各种场景。它采用策略,将一个数组分成两个子数组,然后递归地对这两个子数组进行排序。本文将介绍三种快速排序的实现方法,并附上相应的源码。⚙️一、快速排序的基本原理一个基准元素(pivot)分成两个子数组递归合并O(n log n)O(n log n)O(n^2)后文我们将给出优化方案O(log n)📚三、实现霍尔方法是快速排序原始版本中使用的分区方法。原创 2024-08-16 23:08:28 · 1068 阅读 · 1 评论 -
时间复杂度与空间复杂度(小白向)
目录大O表示法时间复杂度打印数组二分查找空间复杂度常数空间复杂度 O(1) 示例:交换两个变量的值线性空间复杂度 O(n) 示例:数组复制对数空间复杂度 O(log n) 示例:斐波那契数列(递归版)优化策略 大O表示法的字母O是函数的,也被称为,即字母O代表。用大O符号描述函数通常只提供函数增长率的一个上界常见的有:O(1),O(n),O(n²) ,O(nlogn),O(logn)。 时间复杂度和空间复杂度是计算机科学中用于评估算法效率的重要指标。这两个概念可以帮助我们了解算法原创 2024-06-30 20:15:14 · 806 阅读 · 0 评论 -
C语言实现单链表操作详解:从基础到进阶(动图版)(附源码)
在数据结构的广阔领域中,线性表是一片丰富多彩的天地,其中包括了数组、顺序表、链表和队列等诸多形态。顺序表作为数组的直接延伸,其物理存储的连续性虽保证了访问的便捷,但也暴露出在动态数据管理上的短板——空间利用率低下及频繁扩容导致的效率瓶颈。正是基于此,链表作为一种创新的数据结构设计,凸显了其不可替代的价值。那么,我将带领大家探索链表的奥秘链表作为数据结构的璀璨明珠,其灵活性与高效性在处理动态数据集时大放异彩,克服了顺序表的固有局限。原创 2024-05-09 22:13:13 · 2746 阅读 · 12 评论 -
C语言实战教程:构建简易通讯录管理系统
本通讯录管理系统旨在实现基本的联系人信息管理功能,包括添加、删除、查询、修改联系人信息以及显示通讯录列表。(头文件)(功能实现)和main.c(主函数及程序入口)。通过这个通讯录管理系统的实践,我们不仅复习了C语言的基础知识,还掌握了如何设计和实现一个小型项目。重点在于理解数据结构的选择、内存管理的重要性以及模块化编程的优势。此项目还可以进一步扩展,比如增加排序功能、采用文件存储实现持久化通讯录,或是引入更复杂的错误处理机制。原创 2024-04-29 23:43:05 · 875 阅读 · 8 评论 -
线性数据结构:深入探究顺序表
💡目录【目标】【线性表 (Linear List)】【顺序表详解】顺序表主要特性接口实现尾插尾删首插首删线性表的逻辑结构清晰,易于理解和实现。根据存储结构的不同,线性表可以分为以下两类:顺序表:线性表的元素在计算机内存中按照其逻辑顺序依次存储,占据一片连续的存储空间。在C语言中,可以使用数组来实现顺序表。 链表:线性表的元素在内存中不必连续存放,每个元素(称为节点)包含数据域和指针域,指针域用于存储下一个元素的地址。链表分为单链表、双链表和循环链表等多种形式。在C语言中,链表通常通过结构体和原创 2024-04-26 23:27:52 · 624 阅读 · 2 评论