qsort和sort区别

  •                     <本文中排序都是采用的从小到大排序>
    (qsort):
    一、对int类型数组排序
    intnum[100];
    int cmp (
    constvoid *a , const void *b)
    {
        return *(int *)a - *(int*)b;
    }
    qsort(num,100,sizeof(num[0]),cmp);

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

    charword[100];
    int cmp( const void *a , const void *b )
    {
        return*(char *)a - *(char*)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)


    四、对结构体一级排序
    structIn
    {
        double data;
        intother;
    }s[100]
    //
    按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写

    intcmp( const void *a ,const void *b)
    {
        return((In *)a)->data > ((In *)b)->data ? 1 :-1;
    }
    qsort(s,100,sizeof(s[0]),cmp);

    五、对结构体二级排序
    structIn
    {
        int x;
        inty;
    }s[100];

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

    intcmp( const void *a , const void *b )
    {
        structIn *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);

    六、对字符串进行排序

    structIn
    {
        int data;
        charstr[100];
    }s[100];
    //
    按照结构体中字符串str的字典顺序排序

    intcmp ( const void *a , const void *b )
    {
        returnstrcmp( (*(In *)a)->str , (*(In *)b)->str);
    }
    qsort(s,100,sizeof(s[0]),cmp);

7对二维数组进行排序

chars[100][100];

intcmp(const void *a,const void *b)

{
return *((int*)b+1)-*((int*)a+1);
}

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

8
注意:1qsort头文件为stdlibsortalgorithm

2qsort可以用来对charch[100][100]二位数组进行排序

3 sort可以对char×ch[1000]这个指针数组进行排序



sort

1sort对指针数组排序

char*tem[110]={NULL};类似二维数组

intcmp(const char *a,const char *b)

{

if(strcmp(a,b)<0)

returntrue;

returnfalse;

}
sort(tem,tem+(110),cmp);
2

sort(v.begin(),v.end());开始的位置,结束位置

排序的数据类型不局限于整数,只要是定义了小于运算的类型都可以,比如字符串类string

如果是没有定义小于运算的数据类型,或者想改变排序的顺序,就要用到第三参数——比较函数。比较函数是一个自己定义的函数,返回值是bool型,它规定了什么样的关系才是小于。想把刚才的整数数组按降序排列,可以先定义一个比较函数cmp

boolcmp(int a,int b)

{

returna>b;

}

排序的时候就写sort(a,a+100,cmp);


posted on 2012-06-15 20:23  c语言源码  阅读(267)  评论(0编辑  收藏  举报

导航