![44e04d7e034ed50f9e3e15f047d716aa.png](https://i-blog.csdnimg.cn/blog_migrate/13d718d9b6fadce47292dc8d46350ba7.jpeg)
前言
大家在做学生成绩管理系统的时候,其中一个功能是要实现对学生的成绩从高到低排名,如果数据是存储在数组中的话,会很容易实现,但是这时成绩信息作为结构体成员被保存在单链表中,所以在每一轮交换排序的时候,地址不像数组那样可以简单通过下标转换而改变 所以在这里给大家分享下单链表的冒泡排序 。
![14e6c0d473ffbdb886237fba7621c32c.png](https://i-blog.csdnimg.cn/blog_migrate/80bff0034c1425b2198cc5a6545c79d6.jpeg)
冒泡排序
先说说冒泡排序的中心思想:通过对无序序列的相邻元素两两比较交换,每次把最大(小)的数据放在最后,这个过程就像是冒泡一样,所以叫他冒泡排序。
![56c5df904448d202766b7ef5a33fbde6.png](https://i-blog.csdnimg.cn/blog_migrate/2699e02c62412bab0b970aa96ba13fc9.jpeg)
新手上路,多多关注,这真的对我很重要
在数组中冒泡排序之所以容易实现的原因在于: 数组中数据在内存中的存储是连续的,并且通过下标的改变就可以轻松改变指针所指的地址
但在链表中,每个节点在内存中的位置是不确定的,所以不容易改变指针所指地址,来重复对链表内相邻节点的数据进行比较。
![e8af15e804254aa6c014a78064b0d483.png](https://i-blog.csdnimg.cn/blog_migrate/a525ed94b3f6f2d830fdec83d3a1f2da.jpeg)
单链表冒泡排序
创建链表
![f4faed9670b8e930321223792226444f.png](https://i-blog.csdnimg.cn/blog_migrate/c127e90aa63bd25a8393dc95bc62bee7.jpeg)
冒泡排序
![0851ecbb61d20d78a203968f3b9d9014.png](https://i-blog.csdnimg.cn/blog_migrate/1b223913d4e655dd98e07ef37ebadcb9.jpeg)
单链表类型是有头节点的链表,理解过程之后你可以试着用无头节点类型的单链表实现以下,举一反三。行文不易,新手上路,多多关注,这真的对我很重要,有什么学习知识需求也可以评论区留言呦,持续更新中。
![9393dc707015bbdd4e61c9c93ad2967c.png](https://i-blog.csdnimg.cn/blog_migrate/a63928e38e5bf67c88234a74628b1f24.jpeg)