摘要:qsort包含在头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。


  • 最新分享:没空间密码怎么进别人的QQ空间 18招超强绝密QQ技巧

    C语言标准库函数qsort 详解[QSort函数排序用法]

    qsort包含在头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。

    函数原型:

    void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );

    用法以及参数说明:

    Sorts the num elements of the array pointed by base, each element size bytes long, using the comparator function to determine the order.

    The sorting algorithm used by this function compares pairs of values by calling the specified comparator function with two pointers to elements of the array.

    The function does not return any value, but modifies the content of the array pointed by base reordering its elements to the newly sorted order.

    base Pointer to the first element of the array to be sorted.(数组起始地址)
    num Number of elements in the array pointed by base.(数组元素个数)
    size Size in bytes of each element in the array.(每一个元素的大小)
    comparator Function that compares two elements.(函数指针,指向比较函数)
    1、The function must accept two parameters that are pointers to elements, type-casted as void*. These parameters should be cast back to some data type and be compared.
    2、The return value of this function should represent whether elem1 is considered less than, equal to, or greater than elem2 by returning, respectively, a negative value, zero or a positive value.
    Return Value none (无返回值)

    一、对int类型数组排序

    int num[100];

    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];

    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 Sample
    {
    double data;
    int other;
    }s[100]

    //按照data的值从小到大将结构体排序

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

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

    五、对结构体二级排序

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

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

    int cmp( const void *a , const void *b )
    {
    struct Sample *c = (Sample *)a;
    struct Sample *d = (Sample *)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 Sample
    {
    int data;
    char str[100];
    }s[100];

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

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

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

    附加一个完整点的代码,对字符串二维数组排序:

    #include 
    #include 
    #include 

    char s[2001][1001];

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

    int main(){
        int i,n;
        scanf("%d",&n);
        getchar();
        for(i=0;i    qsort(s,n,1001*sizeof(char),cmp);
        for(i=0;i    return 0;
    }


    本站敬请您关注:w w w。qqsort。c o m


    本文分享主题: 《C语言标准库函数qsort详解[QSort函数排序用法]》,由QQ分类知识网编辑整理;如果您需要转载本文,留下本文链接:http://www.qqsort.com/view/51137.html; QQSort编辑部每天为您分享丰富的QQ知识,欢迎您再次光临,感谢您的支持!
    分享到QQ空间
    »我也要分享精彩QQ知识[QQSort总群(106904361) QQ达人团(126598500)]!
    »QQSort推荐:QQ号《6310393》的迷你主页更精彩!
标签:QSort 
0
0

(提示:顶到QQ分类知识网首页,分享给更多人)   上一篇 下一篇
复制本页网址,与您QQ/MSN上的好友分享,就是您给予QQ分类知识网前进的最大动力!   »用Google翻译此网页: 查看此网页的繁体版 查看此网页的英文版
现在有0人对'C语言标准库函数qsort详解[QSort函数排序用法]'发表评论 >>查看本文章所有评论
您的姓名: * 可选项,留空即为匿名发表
评论内容:
剩余字数:  * 按 Ctrl + Enter 直接发送.
            »»点此进入协作更新此资料
QQSort温馨提示:评论只需提交一次,请耐心等候审核,方可显示.
相关资料推荐
精彩QQ知识分享
新手上路
个性小工具
QQ安全
QQ日志选14
网友点击排行榜
QQ分类网网友推荐
合作伙伴: 百度 腾讯QQ 谷歌 商录 QQ新闻 小金子目录 QQ官方下载 手机QQ QQ空间  更多»
关于我们 | 合作伙伴 | 知识分享 | 友情链接 | 联系方式 | 广告服务 | QQSort工具 | 网站地图 | 收藏本页
QQSort 2021部分新建群号: QQSort总群(106904361) QQ达人团(126598500)
声明:本站为我们QQ爱好者共同分享知识的平台,非腾讯QQ官方网站.
2004-2021 QQ分类知识网 - 最新QQ知识