我是靠谱客的博主 受伤皮带,最近开发中收集的这篇文章主要介绍使用qsort函数进行快速排序以及链表的冒泡排序qsort函数快速排序链表内容的冒泡排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

  • qsort函数快速排序
    • qsort快速排序二维数组
    • qsort快速排序结构体数组
    • qsort快速排序指针数组(malloc申请空间的二维数组)
  • 链表内容的冒泡排序

文章参考传送门
参考博客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数组冒泡排序没什么不同,唯一难理解的点可能就是链表的地址处理!以及其他排序方法用到链表上面,都需要搞清楚链表到底是什么!

最后

以上就是受伤皮带为你收集整理的使用qsort函数进行快速排序以及链表的冒泡排序qsort函数快速排序链表内容的冒泡排序的全部内容,希望文章能够帮你解决使用qsort函数进行快速排序以及链表的冒泡排序qsort函数快速排序链表内容的冒泡排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部