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

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

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

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

qsort函数快速排序

qsort快速排序二维数组

对应回调函数如下

复制代码
1
2
3
4
5
6
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使用实例

复制代码
1
2
qsort(name, number, sizeof(name[0]), cmp_int);

qsort快速排序结构体数组

回调函数如下:

复制代码
1
2
3
4
5
int cmp_struct(const void* a, const void* b) { return ((DATA*)a)->item3 - ((DATA*)b)->item3; }

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

回调函数如下:

复制代码
1
2
3
4
5
int cmp_malloc(const void* a, const void* b) { return (*(int**)a)[2] - (*(int**)b)[2]; }

链表内容的冒泡排序

可套用代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//此处是对链表元素使用冒泡排序 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函数进行快速排序以及链表内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部