C语言之qsort函数

一、qsort

1.库函数qsort

qsort是库函数,直接可以用来排序数据,底层使用的是快速排序。

qsort函数可以排序任意类型的数据。

2.头文件

#include<stdlib.h>

3.参数讲解

 

void*类型的指针是无具体类型的指针,这种类型的指针的不能直接解引用,也不能进行加减整数的运算,它的作用是接收任何类型的地址。

 二、qsort函数排序整型数据

#include<stdio.h>
#include<stdlib.h>
int int_cmp(const void* p1, const void* p2)
{
	//第一种方式
	//if (*(int*)p1 > *(int*)p2)
	//	return 1;
	//else if (*(int*)p1 == *(int*)p2)
	//	return 0;
	//else
	//	return -1;

	//第二种方式
	return (*(int*)p1 - *(int*)p2);
}
int main()
{
	int arr[10] = { 2,4,6,8,0,9,7,5,3,1 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(int), int_cmp);
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	return 0;
}

三、qsort函数排序结构体数据

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Stu
{
	char name[20];
	int age;
};
//按照年龄比较
int cmp_stu_by_age(const void* p1, const void* p2)
{
	return ((struct Stu*)p1)->age - ((struct Stu*)p2)->age;
}
//按照名字比较
int cmp_stu_by_name(const void* p1, const void* p2)
{
	return strcmp(((struct Stu*)p1)->name, ((struct Stu*)p2)->name);
}
//按照年龄比较
void test1()
{
	struct Stu s[] = { {"zahngsan",20},{"lisi",30},{"wangwu",15} };
	int sz = sizeof(s) / sizeof(s[0]);
	qsort(s, sz, sizeof(s[0]), cmp_stu_by_age);
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", s[i].age);
	}
	printf("\n");
}
//按照名字比较
void test2()
{
	struct Stu s[] = { {"zahngsan",20},{"lisi",30},{"wangwu",15} };
	int sz = sizeof(s) / sizeof(s[0]);
	qsort(s, sz, sizeof(s[0]), cmp_stu_by_name);
	for (int i = 0; i < sz; i++)
	{
		printf("%s ",s[i].name);
	}
	printf("\n");
}
int main()
{
	test1();
	test2();
	return 0;
}

相关推荐

  1. 探索C语言标准库中的qsort函数

    2024-07-15 21:46:01       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 21:46:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 21:46:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 21:46:01       45 阅读
  4. Python语言-面向对象

    2024-07-15 21:46:01       55 阅读

热门阅读

  1. 构建加速秘籍:精通Gradle构建启动参数

    2024-07-15 21:46:01       17 阅读
  2. FATE Flow 源码解析 - 资源分配流程

    2024-07-15 21:46:01       15 阅读
  3. 每天一个数据分析题(四百二十九)- 假设检验

    2024-07-15 21:46:01       17 阅读
  4. Redis6.2.1版本集群新加副本

    2024-07-15 21:46:01       21 阅读
  5. Linux-线程同步(条件变量、POSIX信号量)

    2024-07-15 21:46:01       19 阅读
  6. HarmonyOS赋能套件参考地址

    2024-07-15 21:46:01       14 阅读
  7. C++ 入门第12:模板(Template)

    2024-07-15 21:46:01       20 阅读
  8. 渗透环境安装篇之安装XSS漏洞靶场xss-labs

    2024-07-15 21:46:01       15 阅读
  9. Codeforces Round 957 (Div. 3)

    2024-07-15 21:46:01       19 阅读