Lazy loaded image
📘C语言数据结构
字数 17111阅读时长 43 分钟
2025-7-11
2025-8-23
😀
学习数据结构的小demo练习

通讯录[单链表实现]

fun.c

fun.h

main.c

停车场[链队列+顺序表+二维数组+广度优先搜索实现]

garage.c

garage.h

waitCar_linkQueue.c

waitCar_linkQueue.h

auxiliary_fun.c

auxiliary_fun.h

BFS_parking.c

BFS_parking.h

main.c

数据结构[顺序表]

seqlist.c

seqlist.h

main.c

数据结构[单向不循环链表]

linklist.c

linklist.h

main.c

数据结构[单向循环链表-约瑟夫环]

looplist.c

looplist.h

main.c

数据结构[双向循环链表]

doublelist.c

doublelist.h

main.c

数据结构[顺序栈]

seqstack.c

seqstack.h

main.c

数据结构[链栈-逆波兰表达式]

linkstack.c

linkstack.h

main.c

数据结构[链队列]

linkqueue.c

linkqueue.h

main.c

数据结构[循环队列(环形队列)]

seqqueue.c

seqqueue.h

main.c

数据结构[创建完全二叉树 二叉排序树插入/删除]

tree.c

tree.h

main.c

数据结构[插入排序:直接插入排序]

main.c

数据结构[插入排序:希尔排序(缩小增量排序)]

main.c

数据结构[交换排序:冒泡排序]

main.c

数据结构[交换排序:快速排序]

main.c

数据结构[选择排序:简单选择排序]

main.c

数据结构[选择排序:堆排序]

main.c

数据结构[归并排序]

main.c

数据结构[基数排序]

main.c

💡
八大排序总结
从算法的简单性来看,我们将7种算法分为两类:
  • 简单算法:冒泡、简单选择、直接插入。
  • 改进算法:希尔、堆、归井、快逮。
从平均情况来看,是然最后3种改进算法要胜过希尔排序,并远远胜过前3种简单算法。
从最好情况看,反而冒泡和直接插入排序要更胜一筹,也就是说,如果你的待排序序列总是基本有序,反而不应该考虑4 种复杂的改进算法。
从最坏情况看,堆排序与归并排序又强过快速排序以及其他简单排序。
从这三组时间复杂度的数据对比中,我们可以得出这样一个认识。堆排序和归并排序就像两个参加奥数考试的优等生,心理素质强,发挥稳定。而快速排序像是很情绪化的天才,心情好时表现极佳,碰到较精糕环境会变得差强人意。但是他们如果都来比赛计算个位数的加减法,它们反而算不过成绩极普通的冒泡和直接插入。
空间复杂度来说,归并排序强调要马跑得快,就得给马吃个饱。快速排序也有相应的空间要求,反面堆排序等却都是少量索取,大量付出,对空间要求是 O(1)。如果执行算法的软件所处的环境非常在乎内存使用量的多少时,选择归并排序和快速排序就不是一个较好的决策了。
稳定性来看,归并排序独占整头,我们前面也说过,对于非常在乎排序稳定性的应用中,归并排序是个好算法。
 
💡
有关C语言其他问题,欢迎您在底部评论区留言,一起交流~
上一篇
Linux IO 进程线程
下一篇
CAN总线学习笔记

评论
Loading...