栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

讲解C++中的sort(快速排序函数)(非常好用)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

讲解C++中的sort(快速排序函数)(非常好用)

C++中有一门算法叫做排序,方法也是千方百计,比如冒泡排序法,选择排序法,快速排序等等。

但冒泡排序法和选择排序法都有个缺点:速度太慢,当你在考试的时候,最烦的就是超时了。冒泡排序法和选择排序法的时间复杂度是n²,而快速排序法的时间复杂度只有n*log2(n)。

log是什么意思呢,指的是a的b次方是n,a的值较常见的是2和10,因为2进制和10进制较常见,而在C++中,log的底数为2,真数是n,也就是2的多少次方是n,比如n是16,对数就应是4。所以快速排序法就快了许多。

例如给10^6个数排序,用前两种方法排序的话得需要10^12次计算,可log2(10^12)大概只有40,所以只需要大概4*10^7次计算。

好了,话不多说,来看看sort函数是如何使用的吧:

1>一位数组按升序排序

sort用法:sort(数组名,数组名+长度)

数组名其实指的是需要排序的第一项,数组名+长度指的是需要排序的最后一项,所以应该是sort(首地址,尾地址)

例如从a[0]到a[6]进行排序,应写成:sort(a,a+6);或sort(&a[0],&a[6]);

如果从a[3]到a[7]进行排序,应写成:sort(a+3,a+7);或sort(&a[3],&a[7]); 

2>一位数组按降序排序

sort用法:sort(数组名,​​​​​数组名+长度,greater<类型>());

类型里填数组的类型,是int就填int是char就填char;其他内容与升序相同。

3>结构体数组按某个成员大小排序

sort用法:sort(数组名,数组名+长度,cmp)

cmp为自定义比较函数,如果返回的值是true就不交换,是false就交换:比如你想按照结构体内的x的升序排序,cmp就应该这么写:

bool cmp(node a,node,b)
{
    return a.x 

但如果x相同,我们要按y的升序来排,cmp里这么写: 

bool cmp(node a,node,b)
{
    if(a.x==b.x)
    return a.y 

给个点赞、关注支持支持呗(^_^)

如果有不懂的的问题,可以留在评论区里,我会在24小时内回复的(✪ω✪)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036594.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号