前言
大家在做需要排名的项目的时候,需要把各种数据从高到低排序。如果用的冒泡排序的话,处理数组是十分简单的。因为数组的存储空间的连续的,可以通过下标就可以简单的实现。但如果是链表的话,内存地址是随机分配的,不能像数组那样通过下标就直接实现。所以在这里给大家介绍一个简单实现的冒泡排序。
冒泡排序
冒泡排序的是交换排序其中的一种,主要思想是每一个元素与后一个元素比较,若这个元素大于后一个元素,则交换这两个元素的位置(这里采用从小到大排序),第一次排序后最后一个数已经变成了最大数,再进行n - 2次排序即可完成(假设有n个数据)。代码如下:
void BubbleSort(int a[], int n)
{
for(int i = 0; i < n - 1; i++)
{
for(int j = 0; j < n - i - 1; j++)
{
if(a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
但这只适用于连续存储空间。对于链表来说,不太适用。所以接下来我将介绍一个比较简单的代码来实现链表的冒泡排序,代码如下(该链表是包含有头结点的,即第一个结点不放数据):
// 进行冒泡排序
void BubbleSort(NODE* L)
{
int count = 0;//记录链表结点的个数
NODE* p, * q, * tail;//创建三个指针,进行冒泡排序
p = L;

本文详细介绍了如何在链表上实现冒泡排序算法,通过计算链表长度并使用三个指针进行元素比较和交换,实现了链表数据的有效排序。
最低0.47元/天 解锁文章
7300

被折叠的 条评论
为什么被折叠?



