C语言函数——qsort函数的使用

目录

一、qsort函数:

1、定义:

2、参数:

(1).基础

(2).数字

(3).大小

(4).比较

二、总代码:

1、整型比较:

2、浮点型比较:

3、字符串比较:

4、结构体比较:


一、qsort函数:

C语言函数——qsort函数的使用_第1张图片

1、定义:

void qsort (

                  void* base,        //待排序数据的起始地址
                  size_t num,       //待排序数据的元素个数
                  size_t size,       //待排序数据元素的大小(单位是字节)
                  int (*compar)(const void*,const void*)        //比较2个元素大小的函数指针
                 );
对数组的元素进行排序:

对数组中指向的元素进行排序,每个元素的长度为字节,使用函数确定顺序。
此函数使用的排序算法通过调用指定的函数来比较元素对,并将指向这些元素的指针作为参数。该函数不返回任何值,而是通过对其元素进行重新排序来修改所指向的数组的内容。

2、参数:

(1).基础

 指向要排序的数组的第一个对象的指针,该对象已转换为 .void*

(2).数字

所指向的数组中的元素数。
是无符号整数类型。basesize_t

(3).大小

数组中每个元素的大小(以字节为单位)。
是无符号整数类型。size_t

(4).比较

C语言函数——qsort函数的使用_第2张图片

C语言函数——qsort函数的使用_第3张图片

二、总代码:

1、整型比较:

int compare(const void* p1, const void* p2)
{
	return (*(int*)p1 - *(int*)p2);
}

void test()
{
	int arr[] = { 3,5,7,2,9,6,1,8,4,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), compare);
	print(arr, sz);
}

2、浮点型比较:

int compare(const void* p1, const void* p2)
{
	return (int)(*(double*)p1 - *(double*)p2);
}

void test()
{
	double arr[] = { 3.2,5.4,7.1,2.3,9.6,6.0,1.1,8.4,4.2,10.1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), compare);
	print(arr, sz);
}

3、字符串比较:

int compare(const void* p1, const void* p2)
{
	return strcmp((char*)p1, (char*)p2);
}

void test()
{
	char arr[] = "bgedfac";
	int sz = strlen(arr);
	qsort(arr, sz, sizeof(arr[0]), compare);
	printf("%s", arr);
}

4、结构体比较:

struct stu
{
	char name[10];
	int age;
};

int compare_name(const void* p1, const void* p2)
{
	return strcmp(((struct stu*)p1)->name, ((struct stu*)p2)->name);
}

int compare_age(const void* p1, const void* p2)
{
	return (((struct stu*)p1)->age - ((struct stu*)p2)->age);
}

void print(struct stu s[],int sz)
{
	for (int i = 0; i < sz; i++)
	{
		printf("%s,%d  ", s[i].name, s[i].age);
	}
	printf("\n");
}

test()
{
	struct stu s[] = { {"zhangsan",33},{"lisi",22},{"wangwu",44} };
	int sz = sizeof(s) / sizeof(s[0]);

	qsort(s, sz, sizeof(s[0]), compare_name);
	print(s, sz);

	qsort(s, sz, sizeof(s[0]), compare_age);
	print(s,sz);

}

C语言函数——qsort函数的使用_第4张图片

你可能感兴趣的:(C语言函数,c语言)