关于sort排序通用的函数接口
2015-04-18 16:12
567 查看
#ifndef _SORT_H_INCLUDE_ #define _SORT_H_INCLUDE_ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> void ngx_sort(void*base,size_t n,size_t size,int(*cmp)(const void*,const void*)); void ngx_print(void*base,size_t n,size_t size); #endif
#include "sort.h" void ngx_sort(void*base,size_t n,size_t size,int(*cmp)(const void*p1, const void*p2)) { u_char *p1,*p2,*p; p=malloc(size); if(p==NULL) return ; for(p1=(u_char*)base+size; p1<(u_char*)base+size*n; p1+=size) { memcpy(p,p1,size); for(p2=p1; p2>(u_char*)base&&cmp(p2-size,p)>0; p2-=size) { memcpy(p2,p2-size,size); } memcpy(p2,p,size); } free(p); } void ngx_print(void*base,size_t n,size_t size) { u_char *elem; size_t i=0; elem=base; for(i=0;i<n;i++){ printf("%d ",*elem); elem+=size; } printf("\n"); }
#include "sort.h" int ngx_cmp_int(const int *p,const int *q) { if(*p>*q) return 1; return -1; } int main(int ac,char**av) { int i,n; int *a; if(ac!=2){ printf("usage:av[1]\n"); return -1; } n=atoi(av[1]); a=malloc(n*sizeof(int)); if(a==NULL) return -1; for(i=0;i<n;i++){ scanf("%d",&a[i]); } ngx_print(a,n,sizeof(int)); ngx_sort(a,n,sizeof(int),ngx_cmp_int); ngx_print(a,n,sizeof(int)); }
obj=sort.o main.o main:$(obj) gcc -o main $(obj) main.o: sort.o: clean: rm -rf main $(obj)
相关文章推荐
- 关于std::sort中的比较函数使用时的严格弱排序(strict weak order)
- 通用排序函数的功能实现(利用接口和委托实现泛型[通用]排序)
- 关于sort的比较函数的static 声明
- STL:algorithm中排序函数sort(升序排列函数)和reverse(反转排列函数)的简单用法
- python几个排序函数 sort sorted argsort
- 原创---关于实现comparable接口的排序例子
- C++ 排序函数 sort(),qsort()的用法
- C++ 排序函数 sort(),qsort()的用法
- java中Collections.sort() 排序函数的用法
- Arrays.sort排序方法以及Comparator和Comparable接口的作用
- 关于sort命令排序技巧
- 关于c语言不同文件之间直接函数接口引用的简介
- java中Collections.sort() 排序函数的用法
- php-redis中的sort排序函数总结
- python的排序函数sort,sorted在列表排序和字典排序中的应用详解和举例
- 关于sort 函数小结
- 关于sort 多字段排序
- JS中的数组排序函数-sort()与revsrse()
- java 集合(5) 类对象排序 / 类实现Comparable 接口 / 调用Collections 类sort()
- 关于函数的返回值是一个接口类型的对象