说到排序,不得不提到qsort
首先如果用普通的for循环来完成冒泡,选择排序的话,好像只能排序整形或者其他的一种
如果使用qsort的话,只需修改一下类型就行了,比较方便。
一、首先需要了解qsort的形参
void qsort(
void* base, //base 指向了要排序的数组的第一个元妻
size_t num, //base指向的数组中的元素个数(待排序的数组的元素的个数)
size_t size, //base指向的数组中元素的大小(单位是字节)
int(*compar)(const void*p1,const void*p2) ); //函数指针 - 指针指向的函数是用来比较数组中的2个元素的先序
void能容纳所有类型,使得主要的部分不用修改,以至于更方便使用
可以看到图中if语句中arr的地址被强制转化为char*指针,使得+ i*width(数组中元素的大小)刚好可以满足数组元素增1。
接下来就是简单的交换就完成主要部分了(因为考虑到结构体有单数字节的空间,所以同一转为char*类型)
二、main函数及其他相似部分
这样就只需要main函数中存放多组不同类型且相似的函数(因为相似,所以多组函数非常好写)
先是int
再就是char
最后呈现运行结果