`
soboer
  • 浏览: 1313723 次
文章分类
社区版块
存档分类
最新评论

QSORT 快排

 
阅读更多

七种qsort排序方法

<本文中排序都是采用的从小到大排序>

一、对int类型数组排序

int num[100];

Sample:

int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}

qsort(num,100,sizeof(num[0]),cmp);

二、对char类型数组排序(同int类型)

char word[100];

Sample:

int cmp( const void *a , const void *b )
{
return *(char *)a - *(int *)b;
}

qsort(word,100,sizeof(word[0]),cmp);

三、对double类型数组排序(特别要注意)

double in[100];

int cmp( const void *a , const void *b )
{
return *(double *)a > *(double *)b ? 1 : -1;
}

qsort(in,100,sizeof(in[0]),cmp);

四、对结构体一级排序

struct In
{
double data;
int other;
}s[100]

//按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写

int cmp( const void *a ,const void *b)
{
return (*(In *)a)->data > (*(In *)b)->data ? 1 : -1;
}

qsort(s,100,sizeof(s[0]),cmp);

五、对结构体二级排序

struct In
{
int x;
int y;
}s[100];

//按照x从小到大排序,当x相等时按照y从大到小排序

int cmp( const void *a , const void *b )
{
struct In *c = (In *)a;
struct In *d = (In *)b;
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
}

qsort(s,100,sizeof(s[0]),cmp);

六、对字符串进行排序

struct In
{
int data;
char str[100];
}s[100];

//按照结构体中字符串str的字典顺序排序

int cmp ( const void *a , const void *b )
{
return strcmp( (*(In *)a)->str , (*(In *)b)->str );
}

qsort(s,100,sizeof(s[0]),cmp);

七、计算几何中求凸包的cmp

int cmp(const void *a,const void *b) //重点cmp函数,把除了1点外的所有点,旋转角度排序
{
struct point *c=(point *)a;
struct point *d=(point *)b;
if( calc(*c,*d,p[1]) < 0) return 1;
else if( !calc(*c,*d,p[1]) && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y)) //如果在一条直线上,则把远的放在前面
return 1;
else return -1;
}

PS:

其中的qsort函数包含在<stdlib.h>的头文件里,strcmp包含在<string.h>的头文件里

分享到:
评论

相关推荐

    qsort快排函数源代码

    C语言qsort快排函数的模版,帮助深入认识模版的快速高效的风格。

    A22-qsort快排.c

    A22-qsort快排.c

    自己实现的排序算法sort

    自己实现的排序算法,排序 sort qsort 快排

    快排归并qsortsort排序时间比较

    快排归并qsortsort排序时间比较。

    myqq 2.8 编译好的程序和源程序

    3. 好友使用qsort快排。 4. 完善了event的缓冲区,和以前的webqq结合使用。 5. 使用assert函数,便于精简发布版本的代码。 Version 2.0 (2008-7-17) New featrues: 1. 包管理器的链表改用loop数据结构,精简代码,...

    MYQQ2009 - 用控制台上QQ

    3. 好友使用qsort快排。 4. 完善了event的缓冲区,和以前的webqq结合使用。 5. 使用assert函数,便于精简发布版本的代码。 Version 2.0 (2008-7-17) New featrues: 1. 包管理器的链表改用loop数据结构,精简代码,...

    MyQQ(DosQQ) 超小的精简QQ DEV-C++ 源码

    3. 好友使用qsort快排。 4. 完善了event的缓冲区,和以前的webqq结合使用。 5. 使用assert函数,便于精简发布版本的代码。 Version 2.0 (2008-7-17) New featrues: 1. 包管理器的链表改用loop数据结构,精简代码,...

    leetcode题库-algorithmPractice:我的算法实践,来自leetcode和我的面试

    经常手撕快排,故特拿出来练习 unRecordPractice 没分类的一些练习 以前的练习,直接收录。 Util 工具类 一些细节 TreeNode:常用形式的树节点,包含一些工具方法。 数组生成树,前中后序遍历等 Tool 一些转换工具 ...

    快速排序(qsort, quick sort) C语言实现

    鉴于初学C语言或C++时对快速排序算法的了解不够深入,在此上传快速排序的C语言实现代码,该实现代码具有模块化特点,并且在代码中写了注释,并在调试过程中易出错的关键地方做了标注;此外,在代码实现中添加了良好...

    快排函数的调用qsort();

    1.快排函数的介绍: 快速排序(Quicksort)是对冒泡排序的一种改进。也是最快的一种排序算法。 2.核心思想: 快速排序算法通过多次比较和交换来实现排序,其排序流程如下:  (1)首先设定一个分界值,通过该分界值将...

    qsort/heapsort/merge/BinarySearch/List实现

    自己写的一些简单算法和数据结构的代码 快排 堆排 归并 二分查找 单链表

    快排c语言代码,有测试函数。。。

    快排c语言代码,有测试函数。。。 快排c语言代码,有测试函数。。。 快排c语言代码,有测试函数。。。 快排c语言代码,有测试函数。。。

    快速排序算法C语言实现

    快速排序算法C语言实现快速排序算法C语言实现 www.edsionte.com/techblog

    qsort_design.h

    本人自己同c语言编写的一个快速排序函数。 int,double,char , 字符串 等四种类型 本人的测试通过。 由此推广 其他类型也是可正确排序的。 当然不排除 有其他未发现的问题 bug 等。...若有发现其他问题,敬请告知...

    C语言快速排序函数用法(qsort)

    主要为大家详细介绍了C语言的快排函数用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    快速排序 c++版本

    c++快排,需要的朋友可以看看,其实我是为了拿分的

    leetcode提交记录怎么看-DataForOffer:学习资料库

    简述快排,如何推导时间复杂度? 主要思想:以数组第一个数为基准mid,从数组的起始位置为i,末尾为j,比较mid和位置为i的大小,如果位置为i的值小于mid,则这两个交换位置并且i增加1,否则置换i和j对应的值,j减一...

    排序实验报告.doc

    (2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出 其中两种较快的方法。 二、问题分析 1、功能分析 分析设计课题的要求,要求编程实现以下功能: (1)排序表的建立—即创建顺序表...

    数据结构 经典代码(ACM)

    //快排 void QSort (int low, int high) { int l, r ; Milkcow p = cow [low] ; l = low, r = high ; while (l ) { while (l [r].price &gt;= p.price) r -- ; cow [l] = cow [r] ; while (l [l]....

Global site tag (gtag.js) - Google Analytics