C语言冒泡排序(升序与降序)——qsort库函数实现

(一)什么是冒泡排序?

(二)怎么用qsort库函数实现冒泡排序?

  1. 所谓冒泡排序就是——相邻元素的比较,并且有可能的话,要进行交换,来实现降序与升序,来完成自己所需的数字排序。

首先,我们来讲一下冒泡的思想,假设我们有n个元素,首元素要和其他元素一一比较的话,需要n-1次,那么接来下来的元素就是n-1-i次,才能完成所有元素互相比较,n-1次是趟数n-1-i是所有元素的比较趟数,如果各位感兴趣的话,可以看看我上一篇博客,这里就不细讲了。

  1. 那我们怎么用qsrot这个库函数来实现冒泡排序呢?接下来,我来带大家一起认识这个库函数,void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*)); 这个函数是用来进行快速排序的,void*base 是指向要排序的数组的第一个对象的指针,转换为void* . size_t num是指数组中由指向的元素数基础 .size_t size是指数组中每个元素的字节大小。int (*compar)是指指向比较两个元素的函数的指针。如果大家看不懂,没关系我直接上图。

C语言冒泡排序(升序与降序)——qsort库函数实现_第1张图片
C语言冒泡排序(升序与降序)——qsort库函数实现_第2张图片

如果大家自己感兴趣,可以去https://legacy.cplusplus.com/reference/cstdlib/qsort/?kw=qsort这个链接,大家可以自己研究研究,这个一个c语言库函数大全,可以查询各种库函数的作用和头文件。

现在我们自己来使用qsot库函数来实现一下冒泡排序。如下图所示

C语言冒泡排序(升序与降序)——qsort库函数实现_第3张图片

C语言冒泡排序(升序与降序)——qsort库函数实现_第4张图片
C语言冒泡排序(升序与降序)——qsort库函数实现_第5张图片

运行结果

C语言冒泡排序(升序与降序)——qsort库函数实现_第6张图片

首先qsort库函数的头文件是

如上图所示,我们来讲解一下qsort()里面的意思,arr是定义数组的名称,n是要输入比较元素的个数,4是我们数组int 类型的字节长度,cmp_int是定义函数的名称。

不难看出qsort函数要实现指针来实现,也需强制类型转换,只要大家理解,是可以很容易就写出来,优点是相比于自己实现冒泡排序,更加高效、简洁!

如果我们要升序就要像我一样,把*(int*)e1放前面,才能实现升序,如果要实现降序,就把*(int*)e2放前面即可。

今天的分享就到这里结束了,觉得学到东西的朋友点点赞,有什么疑问都可以评论,来互相交流、进步!

你可能感兴趣的:(c语言)