由sort算法学到的配接与判断式法则的知识

C++排序算法深度解析:从基础实现到std::sort实战优化 排序算法是计算机科学的核心基础,它通过特定的比较和交换逻辑,将数据元素按照指定顺序重新排列,其效率直接影响程序的性能。从时间复杂度O(n²)的冒泡、选择、插入排序等基础算法,到O(n log n)的快速排序、归并排序、堆排序等高效算法,每种算法都有其独特的原理与适用场景。在C++工程实践中,标准库提供的std::sort函数通常基于Introsort(内省排序)实现,它综合了快速排序、堆排序和插入排序的优势,是处理通用排序需求的高效工具。理解不同算法的稳定性、空间复杂度以及对缓存的影响,对于优化数据处理、游 阅读详情

今天在看《C++标准程序库》时,第399页的sort算法的一个例子引起了我的兴趣,主要代码如下:

很简单,按字符串长度升序排列。我想改为按字符串长度降序排列。于是我试验了以下的方法:
①改return s1.length() < s2.length() 为 return s1.length() > s2.length(); 实验成功。但这样为不同情况就得写两个判断式,不符合复用代码的标准。


②对其配接,not2(ptr_fun(lessLength))); 实验不成功(VC8),因为VC8的实现中not2的参数使用的是引用:

这样会造成引用的引用,这是当前的C++标准所不允许的,好像C++0x会允许。

 

但如果去掉lessLength参数的引用标记,在语法上没有问题了,但运行时会出错。因为a<b的not是a>=b,而这是不满足严格弱序化关系的。

 

所以到目前为止,我的结论就是:不要试图用配接来反转排序。

记录学到的一些简单算法(golang实现,不定期更新) 1.取余 取余常用于判断整数的奇偶性,但其实判断奇偶性可以用&amp;amp;amp;amp;,没必要用取余操作 var num = 17 if (num &amp;amp;amp;amp; 1) == 1 { fmt.Println(&amp;amp;quot;奇数&amp;amp;quot;) } else { fmt.Println(&amp;amp;quot;偶数&amp;amp;quot;) } 一次循环遍历二维数组:遍历二维数组通 阅读详情

相关推荐

C++ 中的sort排序用法

都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 PDF(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。Java语言与原理;大厂,小厂。Android面试先看你熟不熟悉Java语言高级UI与自定义view。

2401_84123171的博客 2855

分享下如何写JS数组sort的比较函数

  我们知道,数组的sort方法可以对数组元素进行排序,默认是按ASCII字母表顺序排序。如果要根据其他的顺序排序就需要为sort方法提供一个比较函数作为参数。这里讲的就是如何写这个比较函数。   譬如:   var a=[1,5,3,7];   a.sort(function(a, b) { return b-a});//从大到小排列   那如果复杂点的顺序应该如何写这个比较函...

weixin_34292959的博客 165

WPS JS宏实战:批量调整200个Word表格格式的避坑指南(附完整代码)

本文提供了一份详尽的WPS JS宏实战指南,针对批量调整大量Word表格格式的需求。文章深入解析了如何利用JS宏自动化设置字体、行距和边框,并重点解决了常见的“首行访问报错”等核心难题,附有可直接使用的完整代码,帮助用户显著提升文档处理效率。

weixin_29280219的博客 430

list sort()委托排序(根据一个值,判断多个条件)

排序规则,按以下规则依次判断 可领奖>未开始>进行中 高品质>低品质 public List<Legend2TreasureTaskData> TreasureTaskDatasList { get { List<Legend2TreasureTaskData> list = new List<Legend2TreasureTaskData>(); foreach (var v in _datas) { list.Add(v

起个名字好难啊 700

UE4逆向实战:如何快速定位UWorld和GName的5种实用技巧(含版本差异分析)

本文详细介绍了UE4逆向工程中快速定位UWorld和GName的5种实用技巧,包括特征码定位法、动态行为分析法、静态符号分析法等,并针对不同版本差异提供了适配方案。特别强调了UWorld作为游戏世界核心容器和GName作为名称管理系统的重要性,帮助开发者高效进行游戏逆向分析。

star的博客 898

DEM高程数据的获取、合并与坐标转换

DEM高程数据的获取、合并与坐标转换一、DEM数据的获取二、数据合并三、投影转换方法一四、投影转换方法二 今天用DEM数据做了一个坡度分析,数据使用过程中涉及到投影坐标转换,由于不是很熟悉所以费了一番功夫。经过一番折腾总结出两个方法,方法一自认为比较便捷的方法,即通过BIGMAP软件中工具列表中的投影转换功能进行。方法二为传统方法,即在Arcgis中用投影栅格工具进行转换。 一、DEM数据的获取 在地理空间数据云网站下载DEM数据(精度包括30米和90米),数据格式为tif格式或img格式,坐标为WGS_1

weixin_48625651的博客 1万+

C++sort函数的用法

C++sort()函数的用法 近来看了c++标准库这本书,学到了很多,就把这其中的一点C++sort()函数的用法写下来和大家分享吧! (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!

liuzuyi200的专栏 6万+

从零开始掌握Python机器学习:七步教程 基础篇

前言 「开始」往往是最难的,尤其是当选择太多的时候,一个人往往很难下定决定做出选择。本教程的目的是帮助几乎没有 Python 机器学习背景的新手成长为知识渊博的实践者,而且这个过程中仅需要使用免费的材料和资源即可。 第一步:基本 Python 技能 如果我们打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。 首先,你需要安装 Python。因为我们后...

hcgx2018的博客 1613

【C++知识】sort函数快排用法

最近在刷ACM经常用到排序,之前学的冒泡,今天尝试用冒泡写洛谷学生会排序那道OJ题却发现警告超时,八大排序里本想用快排,可是看很多题解里的前辈推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数。(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。2、它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n)(2)第二个是结束的地址(最后一位要排序的地址)(1)第一个是要排序的数组的起始地址。

Kirara的博客 500

SAP MTO模式实战:从库存管理到成本核算的深度解析

本文深入解析SAP MTO(Make-to-Order)模式在制造业中的应用,从库存管理到成本核算的全流程实战技巧。通过对比MTS模式,详细阐述MTO的核心逻辑、库存管理配置、成本核算路径及与PP模块的集成要点,帮助企业实现按单生产的高效管理,优化库存水平和资金占用。

weixin_29204205的博客 709

使用RustDesk或者AnyDesk的TCP隧道实现Codesys系列PLC的远程调试和下载

Codesys远程调试

exat500g的博客 7279

C++sort()函数用法讲解总结 ——————墨白

111

正直 的博客 2万+

ros入门(八)---TF坐标转换

TF(TransForm),就是坐标转换,包括了位置和姿态两个方面的变换。

weixin_51157015的博客 3389

详解C++ sort函数的cmp参数

sort降序排序和sort结构体排序的程序实现,cmp函数实际意义理解,看完再也不会忘sort的用法!

异想之旅的博客 3990

虚拟机安装VMware Tools

单击虚拟机-->安装VMware Tool 安装之后会有一个VMware Tools硬盘,里面有VMware Tools.tar.gz的压缩包 按照提示解压它,然后执行vmware-install.pl安装VMware Tools 将安装包放到/tmp目录下。可以直接拽过去,也可以使用cp或者mv命令 进入tmp文件目录并解压此文件包 cd /tmp ...

afei001 621

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

c++小白在洛谷学到的东西——week 1

在C++中,abs函数用于计算整数的绝对值。该函数定义在<cstdlib>头文件中,适用于intlonglong long等整数类型。对于浮点数,应使用<cmath>中的fabs或std::abs。

2602_96257506的博客 309

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

7.排序与sort

本节将简要介绍各种排序算法,并给出模板以及其性能分析。是一种将一组特定的数据按某种顺序进行排列的算法。排序算法多种多样,性质也大多不同。

风中的微尘的博客 582

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

第五周总结——对搜索与sort的理解

这周听取了老师的建议,每天坚持看博客,截止到目前这周已阅读55篇博客,通过这个方法,感觉这一周收获不少。在这55篇博客中,有25篇关于思维的题解(主要是以Codeforces上题目为主),10篇有关STL运用的题目,15篇初涉搜索的题解,还有5篇关于广度优先搜索和深度优先搜索的理论知识。 首先,分三个方面来对这周进行总结: 1、广度优先搜索(BFS): BFS的基本思想在课上的PPT中已经展现的很清楚了,顾名思义就是广,先一层中进行搜索,在这一层都搜索完之后再进行下一层...

m0_63594467的博客 598

C++之STL的algorithm(6)之排序算法(sort、merge)整理

C++之STL的algorithm(6)之排序算法(sort、reverse、merge)整理

ULTRAmanTAROACE的博客 2021

Sort函数用法

Sort函数为C++中中自带的重要函数之一,作用是对数组进行快速排序。     用法如下:sort(起始位置,结束位置,判断函数)。     一般来说,起始位置直接写上要排序的数组就行了,比如我们要排序的数组是r,需要排序n个数,就写成sort(r,r+n),可以不写判断函数,默认从小到大排序。需要注意的是sort默认从r[0]开始排序,所以排序到r[n-1]。     判断函数,通常写为c

Steven_Golden的博客 837

sort函数

说下最近学到的吧,C++中的STL库中的sort函数。 说起来这STL库真的是很好用,之前敲算法题排序的话都是自己一个字母一个字母敲上去的。无非就是冒泡啊简单选择啊桶啊之类的。 而sort函数用起来是非常方便的,它本质上其实就是快排,涉及到了二分法,所以说它用起来效率是非常高的,最不济也是和冒泡用的时间一样,时间复杂度为n*log2(n)。 但是它用代码实现起来还是挺麻烦的,主要是至少也得40多行...

花先生的博客 194

js中sort函数

前言 以前在学习jjavaScript时, 遇到数组的排序算法sort只是记住了使用方法。 最近在刷leetCode。 遇到了一题是:合并两个有序的数组的题。 对于该题, 我给出了两种解题方法。 一个是使用归并的思想, 该方法时间效率高, 但是编写稍微有一点点麻烦。 如果不讲究时间效率, 而是看代码的优雅度, 我也编写了一个使用sort的方法解此题。 以下便是我在使用sort方法时的一些想法。 ...

小木Blog 1万+

算法总结(一)

在学校暑训了一个月,期间学到了几种算法。每种算法都有固定的模板,只要学会了模板,就可以参照模板来解决相应的问题。 目录 贪心 深搜 贪心 首先是贪心算法,需要用到sort这个函数,如果要用sort函数,必须调用algorithm这个包才能使用sort函数。 #include <iostream> #include <stdio.h> #include <...

Lbo_tao的博客 127

c语言sort函数从大到小排序_数据结构与算法(二)——十大排序算法

前言秋招已经开启一个月了,九月份和十月份是我们秋招找工作的黄金时期。但是大多数的企业都会在笔试或者面试中会考察我们数据结构的知识点,有的会直接考查数据结构的代码实现,比如说树的三种深度优先遍历代码递归以及迭代方式的实现。其次就是考察最多的就是几种排序和常用的查找方法,需要我们熟练掌握。还有的就是会通过一个实际问题来对相关的算法进行考察,比如说动态规划、穷举法、贪心算法等。前一篇文章给大家介绍了数据...

weixin_39650091的博客 1261

sort()

近来看了c++标准库这本书,学到了很多,就把这其中的一点C++sort()函数的用法写下来和大家分享吧! (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高! (二)c++标准库里的排序函

gouhexiong1989的博客 844

近日贪心算法的总结

SDAU上的习题还两个没做,不会。对题目了解也很迷糊。一个是B/P最大化,一个是着色成本最小,看不太懂。但也学到了很多贪心算法一些思路,一般都是要用到结构体和sort排序。这个结构也是今天才学会,之前用pair。其实这两个没啥差别。只是在用pair的时候,不知道默认从小到大对第一个排序在特定条件下的效果:若第一个相同时,第二个怎样排。只能用结构体定义。也学习到了关于结构体的知识,之前也不会。大致就...

qq_43642142的博客 201
上一篇: Effective C++ 3nd 读书摘要(九、杂项讨论)Item53 - 55
下一篇: Python中对Tuple之间排序时如何指定第几个元素为关键字排序的问题
thy38
博客等级 码龄19年 184粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值