`
cm14k
  • 浏览: 31926 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

C 标准库qsort函数的使用

阅读更多

快速排序(quick sort)是最有效的排序算法之一。

C实现的快速排序算法的函数名为qsort(), qsort()函数对数据对象数据进行排序。其函数原型在头文件stdlib.h中

其原型为:

void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *,const void *));

 第一个参数为指向要排序的数组头部指针,因为任何数据类型的指针可以转化成void类型指针,故qsort()的第一个参数可以指向任何类型的数组;

第二个参数为要排序的元素数量;

第三个参数为数组中数据对象的大小。因为qsort()将第一个参数转换为void指针,所以会失去每个数组元素的大小信息,为了补充该信息必须把数据对象的大小明确告诉qsort();

第四个参数为指向函数的指针,被指向的函数用于确定排序的规则。该函数接受两个参数,分别为指向进行比较的两个元素,

如果第一个元素大于第二个元素返回正数,小于返回负数,等于返回0;

 

下面的示例程序创建了一个由随机浮点数组成的数组,并对该数组排序。

/*
 *  qsort函数的使用
 *  函数原型 void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *,const void *));
 */
#include <stdio.h>
#include <stdlib.h>

#define NUM 40
void fillarray(double ar[], int n);
void showarray(const double ar[], int n);
int mycomp(const void *p1, const void *p2);

int main(void)
{
    double ar[NUM];
    fillarray(ar, NUM);
    printf("Random List:\n");
    showarray(ar, NUM);
    qsort(ar, NUM, sizeof(double), mycomp);//函数调用
    printf("\nSorted List:\n");
    showarray(ar, NUM);

    return 0;
}

//产生随机数数组
void fillarray(double ar[], int n)
{
    int index;

    for (index = 0; index < n; index++)
    {
        ar[index] = (double)rand() / ((double)rand() + 0.1);
    }
}

//打印数组
void showarray(const double ar[], int n)
{
    int index;

    for (index = 0; index < n; index++)
    {
        printf("%9.4f ", ar[index]);
        if (index % 6 == 5)
        {
            putchar('\n');
        }
    }
}

//排序规则
int mycomp(const void *p1, const void *p2)
{
    const double *a1 = (const double *)p1;
    const double *a2 = (const double *)p2;

    if (*a1 < *a2)
    {
        return -1;
    }
    else if (*a1 == *a2)
    {
        return 0;
    }
    else
    {
        return 1;
    }
}

 输出结果:

Random List:
   0.0022    0.2390    1.2191    0.3910    1.1021    0.2027
   1.3835   20.2830    0.2508    0.8880    2.2179   25.4866
   0.0236    0.9308    0.9911    0.2507    1.2802    0.0939
   0.9760    1.7217    1.2054    1.0326    3.7892    1.9635
   4.1137    0.9241    0.9971    1.5582    0.8955   35.3798
   4.0579   12.0460    0.0096    1.0109    0.8506    1.1529
   2.3614    1.5876    0.4825    6.8749
Sorted List:
   0.0022    0.0096    0.0236    0.0939    0.2027    0.2390
   0.2507    0.2508    0.3910    0.4825    0.8506    0.8880
   0.8955    0.9241    0.9308    0.9760    0.9911    0.9971
   1.0109    1.0326    1.1021    1.1529    1.2054    1.2191
   1.2802    1.3835    1.5582    1.5876    1.7217    1.9635
   2.2179    2.3614    3.7892    4.0579    4.1137    6.8749
  12.0460   20.2830   25.4866   35.3798

 

 

 

 

分享到:
评论

相关推荐

    qsort函数具体介绍

    qsort 函数是 C 语言标准库中的一种排序算法,用于对数组进行排序。它是快速排序(Quicksort)算法的一种实现,能够高效地对数组进行排序。下面是 qsort 函数的详细介绍。 一、qsort 函数的基本用法 qsort 函数的...

    qsort函数常见用法

    qsort 函数是 C 语言标准库中的一种排序算法,用于对数组进行排序。它的原型如下: `void qsort(void *base, size_t num, size_t width, int (*cmp)(const void *, const void *))` 其中,`base` 是要排序的数组的...

    97. qsort函数讲解(1).pdf

    qsort函数是C标准库中的一个非常重要的排序函数,它使用快速排序算法对数据进行排序,是程序员在编写程序过程中进行数据排序的有力工具。qsort函数能够对各种类型的数据进行排序,因为它并不关心数据的类型,而是...

    qsort函数常见用法v1.1

    `qsort`函数是C语言标准库中用于通用数组排序的一个强大工具,它使用快速排序算法,提供了高度灵活的排序机制。`qsort`的原型在`&lt;stdlib.h&gt;`头文件中定义,其通用性使得它可以处理任何类型的数据,只要用户能够提供...

    qsort函数应用大全.doc

    qsort 函数是 C 语言标准库中的一个函数,用于对数组进行排序。它是根据元素的值或结构体成员的值进行排序的。本文将对 qsort 函数的七种应用进行详细讲解。 一、对 int 类型数组排序 qsort 函数可以对 int 类型...

    用冒泡排序实现qsort函数

    qsort函数是C标准库中的一个通用排序函数,它可以对任何类型的数据进行排序,只要提供适当的比较函数和数据类型。为了使用冒泡排序实现qsort函数,我们需要定义一个符合qsort要求的比较函数,然后通过qsort函数调用...

    C语言标准函数库 包括全部常用库函数

    以上只是C语言标准库的一部分,每个函数都有其特定的用途和用法,掌握这些函数能极大地提升编程效率。通过深入学习和实践,开发者可以更加熟练地运用C语言解决各种问题。这个压缩包提供的C语言函数大全,正是一个很...

    C语言中qsort函数的用法实例详解

    C语言中的qsort函数是标准库中提供的一种排序算法,主要用于对数组进行排序。qsort函数的声明在stdlib.h头文件中,函数原型为: void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, ...

    qsort C语言版

    `qsort` 是一个在 C 语言标准库 `&lt;stdlib.h&gt;` 中定义的函数,用于对数组进行快速排序。它是一个非常强大的工具,可以用来对多种数据类型进行排序,包括基本数据类型如 `int`, `char`, `double` 以及复杂数据类型如...

    C标准库源代码 很全

    C标准库,全称为C Standard Library,是C编程语言的核心组成部分,它提供了一系列预先定义好的函数和类型,供程序员在编写程序时使用。这个压缩包包含的“C标准库源代码”是C语言爱好者和开发者宝贵的参考资料,可以...

    标准C语言函数库

    标准C语言函数库,通常被称为C标准库,是C语言编程的核心组成部分,为程序员提供了大量的预定义函数,使得开发过程更加便捷。本文将深入探讨标准C语言函数库的各个方面,包括它的起源、组成、主要功能以及如何在实际...

    C标准库使用排序.mht

    C标准库使用排序 C语言标准库函数qsort排序的介绍与使用 qsort函数声明如下: void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));

    c语言函数库.rar

    本文件“c语言函数库.rar”很可能包含了一份关于C语言标准库的详细资料。 C语言的标准库,也被称为ISO C库,被定义在C语言的ISO/IEC 9899标准中。这个库分为多个部分,包括: 1. 输入/输出(I/O):`stdio.h`...

    qsort快排函数源代码

    `qsort`是C语言标准库中的一个强大而灵活的排序函数,用于对数组进行排序。它使用了快速排序算法作为其内部实现,因此被称为“快速排序”或简称“快排”。本文将详细介绍`qsort`函数的工作原理及其在C语言中的实现...

    c语言标准库源码大全

    通过阅读和分析这些源代码,你可以了解C语言标准库的实现细节,学习如何编写高效、安全的C代码。此外,还能理解库函数的错误处理策略,以及它们是如何与操作系统进行交互的。这对于提升编程技巧,尤其是进行系统级...

    C语言函数库详解(收藏版)

    C语言函数库是C标准库的重要组成部分,它是为C语言程序员提供的各种标准函数的集合,这些函数可以用来执行各种常见的任务,如输入/输出、内存操作、数学计算、系统调用等。下面将详细介绍各函数库的内容及其用途。 ...

    C标准库源码及手册.zip

    这个文本文件可以帮助你理解C标准库如何与POSIX兼容,以及如何在不同操作系统上使用这些函数。 总的来说,这个压缩包是一个全面的C语言学习资源,无论是初学者还是经验丰富的开发者,都能从中受益。通过阅读手册,...

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

    - `qsort`是C语言标准库中的一个函数,用于对任意类型的数组进行排序。 - 函数原型为:`void qsort(void *base, size_t num, size_t size, int (*compar)(const void *, const void *));` - `base`:指向待排序...

    C语言函数库详细解析

    三、C语言函数使用方法 在使用C语言函数时,需要首先通过#include指令引入相应的头文件,然后根据函数原型正确调用函数。例如,要使用printf()函数输出字符串,需在程序开头写入`#include &lt;stdio.h&gt;`,接着在主函数...

Global site tag (gtag.js) - Google Analytics