📜  C qsort()与C++ sort()(1)

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

C qsort()与C++ sort()

排序算法是计算机程序设计中基础的算法之一。在实际的应用中,需要对一系列元素进行排序,以便更好地处理和展示数据。C语言和C++编程语言中都内置了排序函数,其中C语言内置了qsort()函数,C++语言中内置了sort()函数。

C qsort()

qsort()函数是C语言中用来排序的函数之一。 qsort()函数能够对数据进行排序,数据可以是基本数据类型如整型、字符型、浮点型,也可以是结构体。qsort()函数的函数原型如下所示:

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

参数说明:

  • base:需要排序的数据数组首元素的指针
  • nitems:数据数组中元素的个数
  • size:每个元素的大小
  • compar:一个返回整数值的比较函数指针,用来比较两个元素的大小关系。若返回值小于0,则表示第一个参数小于第二个参数;若返回值等于0,则表示第一个参数等于第二个参数;若返回值大于0,则表示第一个参数大于第二个参数。

使用qsort()函数对整型数组进行排序示例代码如下:

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

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

int main() {
    int arr[] = {3, 2, 1, 5, 4};
    int size = sizeof(arr) / sizeof(arr[0]);
    qsort(arr, size, sizeof(int), compare);
    for(int i=0;i<size;i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
C++ sort()

sort()函数是C++语言中用来排序的函数之一。sort()函数针对容器进行排序,数据可以是基本数据类型如整型、字符型、浮点型,也可以是结构体。sort()函数的函数原型如下所示:

template <typename T>
void sort(T first, T last, Compare comp);

参数说明:

  • first:容器的起始位置
  • last:容器的最后一个元素之后的位置
  • comp:用来比较两个元素大小关系的函数指针或函数对象。若a<b,comp(a,b)返回true,否则返回false。

使用sort()函数对整型数组进行排序示例代码如下:

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    int arr[] = {3, 2, 1, 5, 4};
    int size = sizeof(arr) / sizeof(arr[0]);
    sort(arr, arr + size);
    for(int i=0;i<size;i++) {
        cout << arr[i] << " ";
    }
    return 0;
}
总结

qsort()函数一般适用于C语言编写的程序中,sort()函数一般适用于C++编写的程序中。不同之处在于,C++ sort()函数是针对容器的,而C qsort()函数是针对数组的。同时,C++ sort()函数支持lambda表达式,可以更加灵活地定义比较函数。在使用时,需要根据实际需要选择合适的函数。