这次我们简述一下《快速排序》,我们要用快速排序,一定离不开一个函数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;
}
快速排序不仅可以排整型,还可以是浮点型,结构体等,应用十分广泛,并且如果你掌握娴熟,
可以将冒泡排序升级一下(不过可能会很难,可以试试)。
1799

被折叠的 条评论
为什么被折叠?



