📜  C++ qsort()(1)

📅  最后修改于: 2023-12-03 14:59:45.228000             🧑  作者: Mango

C++中的qsort()

qsort()是一个用于排序的C++标准函数,可以用于对任意类型的数组进行排序。它的完整声明如下:

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

其中,参数含义如下:

  • base: 指向要排序数组的第一个元素的指针。
  • num: 数组的元素个数。
  • size: 每个元素的大小。
  • comp: 一个用户定义的函数指针,用于比较数组中的两个元素的大小关系。
使用方法

qsort()的使用方法非常简单,只需提供一个比较函数即可。例如,下面是对整型数组进行升序排序的示例:

#include <stdlib.h>
#include <stdio.h>

int compare(const void* a, const void* b)
{
    return (*(int*)a - *(int*)b);
}

int main()
{
    int array[] = { 3, 1, 4, 1, 5, 9, 2, 6 };
    int size = sizeof(array) / sizeof(array[0]);
    qsort(array, size, sizeof(int), compare);
    for (int i = 0; i < size; ++i)
        printf("%d ", array[i]);
    printf("\n");
    return 0;
}

输出结果为:1 1 2 3 4 5 6 9

注意事项
  • 在比较函数中,如果两个元素相等,则不应返回0。
  • qsort()使用快速排序算法,对于大型数组,它的效率比其他排序算法更高。
  • 如果希望对结构体数组进行排序,则需要定义一个比较函数,并在其中使用结构体变量的成员进行比较。
总结

qsort()是C++标准库中的一个函数,用于对任意类型的数组进行排序。它使用快速排序算法,对于大型数组具有很好的效率。使用qsort()时,只需要提供一个比较函数即可,比较函数的定义应注意遵循指针类型。