qsort快速排序

qsort快速排序

作者:LAMP小白  点击:1725  发布日期:2012-09-30 12:45:00  返回列表
qsort是ANSI C标准提供的 存放于stdlib.h(standard library)中的函数

结构为:void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *));

前3个都很好理解,但是就是第4个参数有些囧

首先他会给你参数名称的函数传2个值,都是const void 的指针,然后接收你返回给他的一个整型

写成

int intcomp(int *x, int *y)
{
    return *x - *y;
}

但在intcomp这遇上了问题,因为他的传递过来的参数是const void *a,我帮他专成了整型指针然后就可以直接返回值了

但编译的时候会报warning,说我返回给他的类型不符合标准

于是老老实实的写const void * 然后在返回的时候再转换就什么都不说了,奇怪...


#include 
#include 
    int intcomp( const void *x, const void *y)
    {
        return *(int *)x - *(int *)y;
    }
    int a[100];
    int main(void)
    {
        int i, n = 0;
        while(scanf("%d", mio_a[n]) != 0)
            ++n;
        qsort(a, n, sizeof(int), intcomp);
        for(i = 0; i < n; i++)
            printf("%dn", a[i]);
        return 0;
    }




上一篇:尽量别用include或require once 下一篇:快递查询API
0