使用qsort函数进行快速排序以及链表的冒泡排序

文章参考传送门
参考博客1
参考博客2

qsort函数快速排序

qsort快速排序二维数组

对应回调函数如下

int cmp_int(const void* a, const void* b)
{
	return ((int*)a)[2] - ((int*)b)[2]; //从小到大排序
	return ((int*)b)[2] - ((int*)a)[2]; //从大到小排序
}

[2]是排序依据,按照第几个数据进行排序
qsort使用实例

qsort(name, number, sizeof(name[0]), cmp_int);

qsort快速排序结构体数组

回调函数如下:

int cmp_struct(const void* a, const void* b)
{
	return ((DATA*)a)->item3 - ((DATA*)b)->item3;
}

qsort快速排序指针数组(malloc申请空间的二维数组)

回调函数如下:

int cmp_malloc(const void* a, const void* b)
{
	return (*(int**)a)[2] - (*(int**)b)[2];
}

链表内容的冒泡排序

可套用代码如下:


		//此处是对链表元素使用冒泡排序

		Node* node1, * node2;    //定义两个排序节点
	
		Node temp;
		int i, j;

		for (i = 0; i < number - 1; i++)
		{
			node1 = TYPE->head->next;   //从头开始冒泡
			node2 = node1->next;

			for (j = 0; j < number - 1; j++)  //单个泡下沉的过程
			{
				if (node1->n3 >= node2->n3) //排序依据
				{
					temp.n3 = node1->n3;
					node1->n3 = node2->n3;
					node2->n3 = temp.n3;   //内容的置换
				}
				node1 = node2;
				node2 = node1->next;    //向后推进
			}
		}

链表的冒泡排序和正常的int数组冒泡排序没什么不同,唯一难理解的点可能就是链表的地址处理!以及其他排序方法用到链表上面,都需要搞清楚链表到底是什么!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HanslerLi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值