首页 > 代码库 > 模仿qsort() 实现一个通用排序函数:msort()

模仿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()