精华内容
下载资源
问答
  • const int N=100010; 结构体: struct POINT{ int x; int y; }; POINT ap[N];...在c++中结构体不需要用struct POINT ...qsort函数调用时格式: qsort(ap,n,sizeof(ap[0]),cmp);n是...

    const int N=100010;

    结构体:

    struct POINT{ int x; int y; };

    POINT ap[N];
    在c++中结构体不需要用struct POINT

    1.qsort

    头文件:stdlib

    qsort函数调用时格式:

    qsort(ap,n,sizeof(ap[0]),cmp);n是比较元素的个数。

    cmp函数:

    int cmp(const void *a,const void *b) { POINT * p1 = (POINT*)a; POINT * p2 = (POINT*)b; if(p1->x != p2->x) return p1->x-p2->x; return p1->y-p2->y; }

    2.sort

    头文件:algorithm

    sort函数调用时格式:

    sort(ap,ap+n,cmp);n是比较元素的个数。

    cmp函数:

           

    int cmp(POINT &a,POINT &b) { if(a.x!=b.x) return a.x>b.x; return a.y>b.y; }

    记住cmp函数中返回表达式,一个是用“-”,另一个是用“>”。



    展开全文
  • qsort 与sort 对结构体排序实例 #include<bits/stdc++.h> using namespace std; typedef struct { string book; int num; }Book; //qsort的比较函数 int cmp(const void * a, const void * b) { return ...

    qsort 与sort 对结构体排序实例

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef struct {
    	string book;
    	int num;
    }Book;
    
    //qsort的比较函数
    int cmp(const void * a, const void * b) {
    	return (*(Book*)a).num > (*(Book*)b).num ? 1 : 0;
    }
    
    //sort的比较函数
    bool cmp_(Book a, Book b) {
    	return a.num > b.num;
    }
    
    
    int main() {
    	Book Bok[3] = { {"1",4},{"2",2},{"3",3} };
    
    
    	cout << endl << "----------------" << "qsort函数" << endl;
    	qsort(Bok, 3, sizeof(Bok[0]),cmp);
    
    	for (auto i : Bok) {
    		cout << i.num << endl;
    	}
    
    	cout << "----------------" << "sort函数" << endl;
    	sort(Bok, Bok + 3, cmp_);
    
    	for (auto i : Bok) {
    		cout << i.num << endl;
    	}
    
    	return 0;
    }
    展开全文
  • //qsort的比较函数 int cmp(const void * a, const void * b) { return (*(Book*)a).num > (*(Book*)b).num ? 1 : 0; } //sort比较函数 bool cmp_(Book a, Book b) { return a.num > b.num; } int main() { ...
  • qsort 与 sort 对结构体排序

    千次阅读 2013-08-28 20:58:39
    struct circle { int begin,end; }circle[10002];...//qsort的比较函数 int cmp( const void *a,const void *b) { return ((CIR*)a)->end - ((CIR*)b)->end; } //sort比较函数 bool cmp1(CIR a,
    struct circle
    {
    	int begin,end;
    }circle[10002];
    typedef struct circle CIR;
    //qsort的比较函数
    int cmp( const void *a,const void *b)
    {
    	return ((CIR*)a)->end - ((CIR*)b)->end;
    }
    //sort的比较函数
    bool cmp1(CIR a, CIR b)
    {
    	return a.end < b.end;
    }
    
    
    sort(circle,circle+n,cmp1);
    
    qsort(circle,n,sizeof(CIR),cmp);
    
    展开全文
  • 由于有场景只允许使用标准c, 需要排序时, 对于c++中更方便sort不能使用, 只能使用c中的qsort了。 这个一定要熟练掌握, ...3. qsort中cmp函数返回值升降序影响 4. 多级排序 5. 结构体

    由于有的场景只允许使用标准c,
    需要排序时,
    对于c++中更方便的sort不能使用,
    只能使用c中的qsort了。
    这个一定要熟练掌握,
    毕竟不可能每次自己写排序算法,
    再说自己写的没有库函数效率高速度快。
    下面是测试代码:
    涉及的知识点:
    1. 结构体
    2. 字符串比较strcmp返回值问题
    3. qsort中cmp函数返回值对升降序的影响
    4. 多级排序
    5. 结构体指针等

    /*
    * By Biechuyangwang
    */
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct node{
        int num;  //成绩
        //int num2;
        char name[10];  //字符数组排序
    };
    int cmp(const void *a,const void *b){
        if((*(node *)a).num!=(*(node *)b).num)  //(*(node *)a)指针所指向的地址的内容(结构体),下面类似。
        //if(((node *)a)->num!=((node *)b)->num)  //(node *)a是指针
        //对符号优先级不是很了解的尽量使用括号,这里的括号都不能少。(点号和箭头的优先级高于强转)
            return (*(node *)a).num-(*(node *)b).num;  //升序
        else return strcmp((*(node *)a).name,(*(node *)b).name);  //升序
        //else return (*(node *)a).num2-(*(node *)b).num2;
    }
    int main(){
        int n;
        while(scanf("%d",&n)!=EOF){
            node *people=(node *)calloc(n,sizeof(node));
            for(int i=0;i<n;i++){
                scanf("%d %s",&((people+i)->num),((people+i)->name));
            }
            qsort(people,n,sizeof(node),cmp);
            for(int i=0;i<n;i++){
                //printf("%d %d\n",(people+i)->num,(people+i)->num2);
                printf("%d %s\n",(people+i)->num,(people+i)->name);
            }
        }
    }
    
    展开全文
  • 学会使用qsort函数排序qsort介绍compare函数介绍不同数据类型相应比较函数定义对数组元素为数字:数组元素为字符时比较函数定义:结构体数据比较函数定义: qsort介绍 qsort函数是一个库函数,它作用是...
  • 对结构体多级排序

    2014-10-04 21:16:21
    qsort()是C中的排序函数,其头文件为:#include  对结构体多级排序 按结构体中多个关键字排序()[以二级为例]: struct Node {  int x;  int y; }s[100]; //按照x从小到大排序,当x相等...
  • 参考C语言的qsort函数实现一个一个能任意数据类型(包括结构体数组进行排序的函数 */ void mysort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *)) {  //base 为要排序
  • C++ qsort函数 详解 快速排序

    千次阅读 2018-08-05 15:36:55
    qsort排序 是快速排序,时间复杂度是nlog2(n) 用起来挺方便。 控制排序方向cmp函数,默认是从小到大,return返回语句:若为1,则...C++ qsort函数 练习3:对结构体排序  anthor:nice1998  time:2018.8....
  • 有一点需要注意的是,结构体的排序是可以直接排一个数据导致结构体排序的,所以大大减少了工作量 有些编译器这样的指针结构体代码不是很支持,用c++编译的话可以减少出错的可能 #include&amp;lt;stdio.h&...
  • qsort结构体排序 (初学者必知)

    万次阅读 多人点赞 2016-08-03 11:09:02
    重点: qsort函数包含在头文件里,strcmp包含在头文件里 首先,排序的方法有很多。对于我们这些初学者来说,可以多懂一些、多学一些来懂一些其中思想。其实只要完全融会贯通一个就够用了;我认为这个就是...
  • 解释:qsort函数对含有nmemb个元素数组进行排序,而base指针指向数组第一个元素。这个数组元素个数由size指定。 compar函数对qsort比较操作进行定义,所以可以定制数字比较,字符串比较,甚至结构体
  • 今晚在做京东笔试题时,使用了qsort函数,由于排序结果不稳定,导致一直无法ac。后来在待排序的结构体中多加入一个关键字段,较简单解决了问题。 题目: 生日礼物Time Limit: 2000/1000 MS (Java/Others) ...
  • C语言中对结构体排序

    2020-11-07 17:33:22
    在C语言中对结构体排序qsort()函数进行排序qsort()里面要传入4个参数–qsort(数组名,数组长度,sizeof(),排序方法) 实验9-5 查找书籍 (20分) 给定n本书名称和定价,本题要求编写程序,查找并输出其中定价...
  • 以下是其具体分类及用法(若无具体说明是以降序排列): 1、一维数组排序: (Element_type是一位数组中存放数据类型,...由于qsort可以排序任意数据类型,包括自定义结构类型,因此,做一个自定义比较函数
  • - 菜鸟日志 - 网易博客qsort函数的用法 2011-03-28 16:11:26| 分类: 默认分类 | 标签: |字号大中小 订阅六类qsort排序方法前一段时间做题觉得qsort函数很好用,但有时不太会用比如按结构体一级排序、二级...
  • C++结构体排序

    2017-02-06 23:53:00
    在C++中,对结构体的排序方式比C语言丰富的多。在C语言中,我们主要是通过qsort进行排序操作(抛开手写排序算法不说)。 在C++<algorithm>中,有一个十分强大的排序函数sort,他的内部综合了许多种排序算法,...
  • qsort函数用法

    2010-08-30 11:01:00
    六类qsort排序方法 qsort函数很好用,但有时不太会用比如按结构体一级排序、二级排序、字符串排序等。 以下是其具体分类及用法(若无具体说明是以降序排列): 1、一维数组排序: ...
  • 之前发过帖中,有讲到过对结构体字符串进行排序的,除了手写之外,便想到用C/C++中的qsort对结构体数组中字符串进行排序。但是推广到sort中时,想了好久也没想明白,看看网上这样帖也比较少,其实还是很好...
  • 结构体排序,多级排序

    2017-03-14 23:04:23
    之前只是主关键字排序,today第一次次...空指针可以在函数体内强制转换为结构体指针,然后设计好这个比较函数,就可以想怎么排序就怎么排序,从而达到多级排序的问题。具体怎么使用qsort()和写cmp()比较函数,自
  • Qt的排序函数qSort的使用

    千次阅读 2014-04-29 10:29:22
    Qt中自带的qSort排序功能,可以对各种内置类型进行排序,比如int, double, string等,使用也...就可以了而如果要对结构体对象进行排序呢,这个时候就需要自己定义一个比如函数,然后qsort调用,下面看具体代码实现。
  • qsort函数用法大全

    2010-10-12 19:12:00
    http://blog.donews.com/zuobj2004/archive/2005/10/10/583367.aspx<br />六类qsort排序方法    前一段时间做题觉得qsort函数很好用,但有时不太会用比如按结构体一级排序、二级排序、字符串排序...
  • c、c++排序函数qsort、stable_sort

    千次阅读 2013-10-17 13:58:12
     vector 结构体的排序,遇到的问题记录一下。 在c++类中使用stable_sort,因为要对结构体排序,所以要使用该函数的三个参数的重载,例:stable_sort(vectorArray.begin(), vectorArray.end(),myCmp);  之前写的...
  • C学习:qsort排序算法专用compare比较函数数组字符串结构体 相关推荐: C学习:qsort快排函数在二维数组中灵活应用 C学习:快排函数使用小结 qsort 说明: qsort()被包含在头文件 <stdlib.h> 以下比较函数...
  •  用户须要排序的数据的类型千变万化,可能是int型,也有可能是自己定义的结构体类型,各种类型的大小比較规则是不一样的,这样看来实现一个这样全能的排序函数似乎不可能。  但详细须要排序的类型应依照什么规则.....
  • qsort(排序)用法

    2010-02-22 10:44:00
    前一段时间做题觉得qsort函数很好用,但有时不太会用比如按结构体一级排序、二级排序、字符串排序等,故通过查资料将其整理一番。 以下是其具体分类及用法(若无具体说明是以降序排列): 1、一维数组排序: ...
  • qsort排序 转载

    2014-02-28 17:11:54
    前一段时间做题觉得qsort函数很好用,但有时不太会用比如按结构体一级排序、二级排序、字符串排序等,故通过查资料将其整理一番。 以下是其具体分类及用法(若无具体说明是以降序排列): 1、一维数组排序: ...
  • 结构体快排qsort()

    2019-07-07 13:47:19
    曾经用到过一次快排,感觉代码量没有减小,反而比较函数有点难编,但是这种排序一般不会出错(前提是比较函数了),而且速度很快,熟练后其实还是非常好用! 用到快排是因为我做到一个题,是uva10420,题目...

空空如也

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
关键字:

qsort函数对结构体的排序