模仿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 文件又是目标执行文件的依赖文件。
  
时间: 2024-11-25 05:00:09

模仿qsort() 实现一个通用排序函数:msort()的相关文章

IMP本质上是一个通用的函数指针

IMP:通用的函数指针 /// A pointer to the function of a method implementation. #if !OBJC_OLD_DISPATCH_PROTOTYPES typedef void (*IMP)(void /* id, SEL, ... */ ); #else typedef id (*IMP)(id, SEL, ...); #endif #if !OBJC_OLD_DISPATCH_PROTOTYPES OBJC_EXPORT void ob

一个通用onReady函数的实现

define([], function(){ function onReady(fn) { var DOC = document, html = DOC.documentElement, W3C = document.dispatchEvent; //FF以前是没有readyState属性的 //判断body是否存在来决定DOM文档是否加载完毕 if (!DOC.readyState) { var readyState = DOC.readyState = DOC.body ? "complet

编写一个排序函数,实现数字排序。排序方法由客户函数实现,函数参数个数为两个,两个参数的关系作为排序后的元素间的关系。

<script>function SortNumber(obj,func) //定义通用排序函数{ //参数验证,如果第一个参数不是数组或第二个参数不是函数则抛出异常 if(!(obj instanceof Array) || !(func instanceof Function)) { var e = new Error(); //生成错误信息 e.number = 100000; //定义错误号 e.message = "参数无效"; //错误描述 throw e; /

C++ 排序函数 sort(),qsort()的使用方法

想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表: 函数名 功能描写叙述 sort 对给定区间全部元素进行排序 stable_sort 对给定区间全部元素进行稳定排序 partial_sort 对给定区间全部元素部分排序 partial_sort_copy 对给定区间复制并排序 nth_element 找出给定区间的某个位置相应的元素 is_sorted 推断一个区间是否已经排好序 p

排序函数qsort()

qsort使用快速排序进行通用排序,一般情况下可以满足排序要求,因此可以不用自己再定义排序算法. 原型: #include<stdlib.h> void qsort(void *buf,size_t num,size_t size,int(*compare)(const void *,const void *)); 例子; 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int comp(const void *,const v

C++ 排序函数 sort(),qsort()的含义与用法 ,字符串string 的逆序排序等

上学时我们很多学了很多种排序算法,不过在c++stl中也封装了sort等函数,头文件是#include <algorithm> 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 partial_sort_copy 对给定区间复制并排序 nth_element 找出给定区间的某个位置对应的元素 is_sorted 判断一个区间是否已经排好序 partition 使得符合某个条件的元

C++ 排序函数 sort(),qsort()的用法

转自:http://blog.csdn.net/zzzmmmkkk/article/details/4266888/ 所以自己总结了一下,首先看sort函数见下表: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 partial_sort_copy 对给定区间复制并排序 nth_element 找出给定区间的某个位置对应的元素 is_sorted 判断一个区间是否已经排好序 pa

stl 之 next_permutation 求出一个排序的下一个排列的函数 转载

这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件<algorithm>下面是以前的笔记    与之完全相反的函数还有prev_permutation  (1) int 类型的next_permutation int main(){ int a[3];a[0]=1;a[1]=2;a[2]=3; do{cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<

C/C++排序函数

在应用中,如果我们不需要自己来编写排序函数的话,可以通过C/C++中已经实现的库函数来完成排序任务. 一.sort函数 sort函数在C++中<algorithm>中,若要使用,需要加上头文件#include <algorithm>,它有如下几种形式: (1)默认情况按升序排列: 假设数组为a[n],下标从0开始,对整个数组按升序排列: int a[110], n; //n表示元素个数 sort(a, a+n); //整个数组按升序排列 (2)若要将某个区间的元素排列,比如需要将第