模仿qsort() 实现一个通用排序函数:msort()

Posted youker_bz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模仿qsort() 实现一个通用排序函数:msort()相关的知识,希望对你有一定的参考价值。

github:  https://github.com/youker-lxy/msort

 

截图:

对测试模块不是很了解,以下测试函数未实现:

test_msort.c  测试 msort.c 的所有函数
test_generate_data.c  测试 generate_data.c 的所有函数

  程序中只产生了int类型的随机数据并排序,未进行其他类型的排序。

总结:

  1 通用排序函数实现:

    qsort()采用快排算法,传入参数为:数组首地址, 左侧下标, 右侧下标, 数组元素大小,  以及传入一个自定义比较函数的指针cmp,传入swap()和cmp()的两个参数都是const void 类型的指针, 是实现通用排序的关键。比如swap()时, 以数组元素大小为范围,从两个元素首地址处,逐个字节进行交换,而不用考虑元素类型。

  2 makefile的学习使用:

    为了实现,只是简单学习了如何编写makefile文件,并在该目录下直接输入命令 make 就可以生成目标执行文件。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下 make clean 就可以了。

    模板如下: 

    target ... : prerequisites ...
        command
        ...
      ...
    target
  可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。
    prerequisites
  生成该target所依赖的文件或target
    command
  该target要执行的命令(任意的shell命令)
  在makefile中,目标文件(target)包含:目标执行文件和中间目标文件( *.o ),依赖文件(prerequisites)就是冒号后面的那些 .c 文件和 .h 文件。每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是目标执行文件的依赖文件。
  

 

以上是关于模仿qsort() 实现一个通用排序函数:msort()的主要内容,如果未能解决你的问题,请参考以下文章

qsort函数实现对任意数据的排序

模拟实现qsort函数 qsort---万用排序

C语言之qsort函数进行排序

用冒泡排序来模拟实现qsort函数

用冒泡排序来模拟实现qsort函数

c语言重要库函数解读 和模拟实现————Qsort