C 库函数qsort

339 阅读1分钟

qsort介绍

qsort是c语言库函数提供的快排函数,在标准库<stdlib.h>中

  • 函数原型:

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

  • 参数:

base:参与排序的数组的指针
nitems:数组元素的个数
size:数组中每个元素的大小
compar比较函数。

  • compar比较函数

compar比较函数的返回值<=0(两个参数不进行置换),>0(两个参数进行置换)

// 函数返回值>0时,参数a和b交换
int compare(const void *a, const void *b)
{
    return *(int*)a - *(int*)b;
}

举例

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

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

int main()
{
    int nums[5] = {5,3,8,10,26};
    printf("排序前:\n");
    for(int i = 0 ; i < 5; i++) {
        printf("%d ", nums[i]);
    }
    qsort(nums, 5, sizeof(int), compare);
    printf("\n排序后:\n");
    for(int i = 0; i < 5; i++) {
        printf("%d ", nums[i]);
    }
 
    return 0;
}

运行结果:

排序前:
5 3 8 10 26 
排序后:
3 5 8 10 26