快速排序函数qsort的使用c语言

简介

qsort主要是对数组或字符串按照一定的规则(升序/降序)进行排列的函数

函数原型

#include<stdlib.h>

void qsort(void*, size_t, size_t, int ( * )(const void * ,  const void *  ))

1.第一个参数:需排列数组的地址

2.第二个参数:数组中的元素个数

3.第三个参数:每个元素所占字节的大小

如果是整形,该参数就可以直接写成sizeof(int)

4.第四个参数是一个函数的地址,直接用函数名来表示函数地址,这是一个什么样的函数呢?这个函数的返回值决定了到底是升序还是降序排列,下面的示例具体说明。

整形数组的升序排列

#include<stdio.h>
#include<stdlib.h>
int inc(const void* a, const void* b) {
	return *(int*)a >*(int*)b?1:-1;
}
int main() {
	int a[7] = { 2,1,4,7,34,54,8 };
	qsort(a, 7, sizeof(int), inc);
	for (int i = 0; i < 7; i++) {
		printf("%d\n", a[i]);
	}
	return 0;
}

运行结果

 

 其中,inc这个函数名是随意起的,并且一般像inc这个函数的实现都是像上面的代码一样,固定的形式,如果想要降序排列,只需吧inc函数体的return值中的a,b交换一下位置便可,也就是说,升序就返回1,降序就返回-1.

只需记住便可

既然都是固定的形式,那么类比,double类型的数组照葫芦画瓢就可以写出来了

double型数组排序

int inc(const void* a, const void* b) {
	return *(double*)a > *(double*)b?1:-1;
}
int main() {
	double a[7] = { 1.12,1.23,4.45,7.56,4.22,5.44,8.11 };
	qsort(a, 7, sizeof(double), inc);
	for (int i = 0; i < 7; i++) {
		printf("%.2llf\n", a[i]);
	}
	return 0;
}

可以发现,只需把int的地方改成double便可 

运行结果

 

char型数组排序

int inc(const void* a, const void* b) {
	return *(char*)a > *(char*)b?1:-1;
}
int main() {
	char a[7] = { 'b','a','d','f','e','c','g'};
	qsort(a, 7, sizeof(char), inc);
	for (int i = 0; i < 7; i++) {
		printf("%c\n", a[i]);
	}
	return 0;
}

相应的改成char就行了 

运行结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.别止步春天.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值