快速排序(简述)

这次我们简述一下《快速排序》,我们要用快速排序,一定离不开一个函数qsort(c/c++自带的函数),而这里边包含指针,它的头文件是stdlib.h。我们先看看它的原型void qsort(void* base,size_t num,size_t  size,int (*cmpare)(const void*a,const void*b));其中的函数类型是void,可以更加方便接受传入的类型(无论是int,还是char等等),其返回值决定了是升序还是降序,假设返回值为x.

如果x>0;则返回大于,x=0;则返回等于,x<0;则返回小于。我们接着来说其原型中的个组成。

base:指向你要排序数组的指针;

num:数组中元素的个数;

size:数组中每个元素的大小;

int (*cmpare)(const void*a,const void*b):是一个函数指针,决定比较的方式。

现在我们呈现出一段代码来实现快速排序

#include<stdio.h>
#include<stdlib.h>
int sc(const void* e1, const void* e2) {
	if (* (float*)e1 == *(float*)e2)
		return 0; 
	else if (* (float*)e1 >* (float*)e2)
		return 1;
	else  
		return -1;
}
int main() { 
	float f[] = { 9.0,8.0,4.5,3,7,8.6 };
	int n = sizeof(f) / sizeof(f[0]);
	qsort(f, n, sizeof(f[0]), sc);
	for (int j = 0;j < n;j++) {
		printf("%f", f[j]);
return 0;
	}

快速排序不仅可以排整型,还可以是浮点型,结构体等,应用十分广泛,并且如果你掌握娴熟,

可以将冒泡排序升级一下(不过可能会很难,可以试试)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值