`
wss71104307
  • 浏览: 224361 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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 - *(char *)b;
}
qsort(word,100,sizeof(word[0]),cmp); 

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

double in[100]; 
Sample:
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 的类型可以很多种,参考上面的例子写
 
Sample:
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 从大到小排序
 
Sample:
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
的字典顺序排序
Sample:  
int cmp ( const void *a , const void *b )
{
         return strcmp( (*(In *)a)->str , (*(In *)b)->str );
}
qsort(s,100,sizeof(s[0]),cmp);

七、计算几何中求凸包的 cmp 
//重点 cmp 函数,把除了 1 点外的所有点,旋转角度排序
int cmp(const void *a,const void *b) 

{
          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排序方法

    《七种qsort排序方法详解》 在编程领域,排序是一项基本且重要的操作,尤其是在算法竞赛(ACM)中更是必不可少。C语言的标准库提供了一个名为`qsort`的通用排序函数,它允许用户自定义比较函数以适应各种类型的排序...

    七种qsort排序

    标题:七种qsort排序 描述:本文详细介绍了七种使用C语言标准库函数`qsort()`进行排序的方法,适用于不同数据类型和复杂结构的排序需求。每种方法都提供了具体的示例代码,旨在帮助读者深入理解`qsort()`函数的使用...

    qsort排序的七种方法

    以下是标题和描述中涉及的七种使用`qsort`排序的方法: 1. **对int类型数组排序**: 使用`qsort`对整型数组排序,比较函数`cmp`通过将void指针转换为int指针并进行减法操作来确定元素的相对顺序。 2. **对char...

    七种qsort排序方法c++代码 排序算法模板

    以上是针对不同数据类型的qsort排序方法的C++代码模板。这些模板可以作为基础,根据实际需求进行调整和扩展。通过对这些示例的理解和实践,开发者能够更加熟练地掌握C++中qsort函数的使用技巧,并灵活应用于各种实际...

    C库函数qsort七种使用方法示例

    C 库函数 qsort 七种使用方法示例 本文将对 C 库函数 qsort 进行详细的介绍,并提供七种使用方法示例,帮助 C 语言初学者快速掌握 qsort 函数的使用方法。 一、对 int 类型数组排序 qsort 函数可以对 int 类型...

    sort,Qsort,归并排序三种排序方法的比较

    三种代码的一种简单比较,可以看出qsort是最快的

    真正的qsort结构体多级排序,不是某个骗子qsort多级排序

    某个CSDN里上传的qsort结构体多级排序的太让我气愤了,辛辛苦苦赚的积分第一次下载就被这种东西给骗了,不能运行不能看,又不好,太可恶了。。。 这份代码OJ测试通过,能看能运行,有释义,不要再被那个说啥子ACM必...

    qsort/快速排序C/C++实现

    ### qsort/快速排序C/C++实现 #### 知识点概述 本篇文章将详细介绍一个用C语言编写的快速排序算法实现。快速排序是一种高效的排序算法,在平均情况下具有O(n log n)的时间复杂度,因此在实际应用中非常广泛。本...

    七种qsort排序方法~~~

    根据给定文件的信息,我们可以详细地探讨一下七种基于`qsort`函数的不同排序方法及其应用场景。`qsort`函数是C语言标准库中的一个通用排序函数,它使用快速排序算法来对数组进行排序。下面将详细介绍这七种排序方法...

    快速排序库函数qsort的调用细则

    快速排序库函数qsort是C标准库中的一种排序算法,用于对数组进行排序。qsort函数包含在头文件中,需要在函数头部加上#include以便调用。qsort函数有四个参数,分别是参与排序的数组名、元素个数、单个元素的大小和...

    C快速排序qsort

    在C语言中,`qsort`函数是标准库`stdlib.h`中提供的一种通用排序接口,用于实现快速排序或者其他类型的排序。 `qsort`函数的原型如下: ```c void qsort(void *base, size_t nel, size_t width, int (*compar)...

    C语言qsort排序大全 多种数据类型的qsort

    在C语言中,`qsort`函数是标准库`&lt;stdlib.h&gt;`中提供的一种通用排序算法,它能够帮助我们对数组进行快速排序。本篇将深入探讨`qsort`的使用,包括其基本原理、参数解析、不同数据类型的排序以及在实际编程中的应用...

    qsort总结.pdf快速排序总结qsort总结.pdf快速排序总结

    快速排序是一种高效的排序算法,由英国计算机科学家托尼·霍尔于1960年提出。它利用分治策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。`qsort`是C语言标准库中的一个通用排序函数,可以在...

    sort 与qsort 使用方法 结构体多级排序 适合于acm竞赛

    经典的acm排序算法,轻松教你学会sort和qsort的使用方法。一个简单,一个比较繁杂,但是运行速度却相对来说较快。希望对大家有帮助,尤其是acm的同学。sort与qsort对结构体多级排序是非常有用的。

    二维的qsort,根据其中任何一维进行快速排序

    本文主要探讨如何使用C语言中的`qsort`函数对一个包含多个元素的结构体数组进行排序,并以二维数组为例,详细介绍如何根据其中的一维进行排序。 #### 二、基础知识回顾 1. **结构体**: - 结构体是一种用户自定义...

    qsort使用法和具体举例说明

    qsort 是一种快速排序算法,广泛应用于 C 语言编程中。它可以对数组中的元素进行排序,包括整数、字符、浮点数、结构体等类型的元素。下面是 qsort 使用法和具体举例说明: 函数原型 void qsort(void *base, size_...

    七种快速排序算法

    在本文中,我们将讨论七种使用`qsort`函数实现快速排序的方法。 1. **对整型(int)数组排序**: 当处理整型数组时,`qsort`函数需要一个比较函数`cmp`来确定元素的相对顺序。在这个例子中,`cmp`函数比较两个整数的...

Global site tag (gtag.js) - Google Analytics