C stdlib qsort() 函数

定义和用法

qsort() 函数将数组中的元素按从小到大的顺序排序。

qsort() 函数定义在 <stdlib.h> 头文件中。

实例

对数组进行排序:

// 比较函数:
// 如果 a 大于 b,返回正数
// 如果 a 小于 b,返回负数
// 如果 a 等于 b,返回 0
int compare(const void *a, const void *b) {
  int *valA = (int *)a;
  int *valB = (int *)b;
  return *valA - *valB;
}

int main() {
  // 创建一个数组
  int myArray[] = {20, 32, 5, 2, 24, 15};
  int size = sizeof(myArray) / sizeof(myArray[0]);

  // 对数组中的值进行排序
  qsort(myArray, size, sizeof(myArray[0]), compare);

  // 显示数组的值
  for(int i = 0; i < size; i++) {
    printf("%d ", myArray[i]);
  }

  return 0;
}

亲自试一试

语法

qsort(void * arr, size_t amount, size_t size, compare);

size_t 数据类型是一个非负整数。

参数

参数 描述
arr 必需。指定要排序的数组。
amount 必需。指定数组中的元素数量。
size 必需。指定数组中元素的大小(以字节为单位)。
compare

必需。指定一个用于比较数组中元素对的函数,以确定哪个元素更大。

该函数应具有以下结构,其中参数 ab 是指向正在比较的数组中元素的指针:

	int myFunction(const void *a, const void *b)
	

该函数应在 a 大于 b 时返回正数,在 a 小于 b 时返回负数,在 a 等于 b 时返回零。