直播内容复盘-排序与交换

昨天晚上的重点是归并排序的算法,虽然我们还没有学到函数递归
我还需要再联系联系,不太能独立写出来。
那就整理一下昨天晚上听到的一些点.

qsort函数的用法以及swap函数

首先声明,需要添加stdlib库

上定义

1
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))

这个定义有点太复杂,我们可以把它特殊化处理

1
void qsort(排序数组,排序个数,sizeof(数组数据类型),排序规则(cmp));

这样的话就明了了,我们输入一个数组,经过qsort函数的的一通操作,返回一个排过序的数组。

因为我们学习过全局变量,所以这个注意事项也好懂

这个数组必须是全局的,即必须在预处理之后,主函数之前定义。

因为这样数组才对qsort函数“可见“。

cmp函数需要自己写,写的思路用到了指针,不过照抄就好。

1
2
3
4
5
6
int cmp (const void * a, const void * b)  
{
   return ( *(int*)a - *(int*)b );
}
//先强转为对应类型的指针,然后再相减,
//a-b为从小到大,b-a为从大到小

如果是字符串排序的话,需要用到strcmp函数,之前已经讲过。

所以这就是qsort库函数的用法。

还有是swap函数,可以在我们写排序的时候用到。
可以交换数组内的数据,非常好用。
形式如下

1
swap(&a,&b);

到用的时候可以把a和b换成数组的元素,如array[1].
可以便捷地实现交换。
这个函数实际上自己写也可以。

这就是昨天晚上在学长的直播中学到的除了归并排序外的东西。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2024 大学生暮暖
  • 访问人数: | 浏览次数:

请我喝杯奶茶吧~

支付宝
微信