排序算法

排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。
Python内置的sorted()函数就可以对list进行排序:
>>> sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]
此外,sorted()函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。比如,如果要倒序排序,我们就可以自定义一个reversed_cmp函数:
def reversed_cmp(x, y):
if x > y:
return -1
if x < y:
return 1
return 0
传入自定义的比较函数reversed_cmp,就可以实现倒序排序:
>>> sorted([36, 5, 12, 9, 21], reversed_cmp)
[36, 21, 12, 9, 5]
我们再看一个字符串排序的例子:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']
默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面。
现在,我们提出排序应该忽略大小写,按照字母序排序。要实现这个算法,不必对现有代码大加改动,只要我们能定义出忽略大小写的比较算法就可以:
def cmp_ignore_case(s1, s2):
u1 = s1.upper()
u2 = s2.upper()
if u1 < u2:
return -1
if u1 > u2:
return 1
return 0
忽略大小写来比较两个字符串,实际上就是先把字符串都变成大写(或者都变成小写),再比较。
这样,我们给sorted传入上述比较函数,即可实现忽略大小写的排序:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
['about', 'bob', 'Credit', 'Zoo']
从上述例子可以看出,高阶函数的抽象能力是非常强大的,而且,核心代码可以保持得非常简洁。
相关推荐:
ChatGPT免费订阅的使用限制:其潜力与挑战,ai辅助线无法对齐画板
ChatGPT支付时银行卡被拒绝?教你几招轻松解决问题!,国内ai换图
什么是seo艺术,什么是seo seo有何价值 ,ai写作生成器 推荐
seo词库优化,搜索词条优化 ,ai点选择
seo需要什么器械,seo需要什么器械才能做 ,长续航ai纯电汽车
为什么说seo这么重要,seo重要吗 ,ai19920403
代哥SEO-让您的网站迅速登顶搜索引擎的秘密武器,济南关键词的排名优化
SEO快速提升:让你的网站排名瞬间飙升的秘诀,网站建设的发展目标
为什么“蜘蛛弛查询”能成为提升网站排名的秘密武器?,惠州网站推广v1戈seo24
ChatGPT维护-智能时代的数字助手,如何让你的工作更高效,ai智能救援
seo能解决什么问题,seo会遇到哪些问题 ,挚爱花嫁ai
ChatGPT4网页空白:重新定义智能交互的未来,怎么登ai
SEO查:如何通过精准优化让网站流量飞速增长,吉林推广营销怎么样
乘风SEO-引领企业互联网时代的腾飞之路,南昌b站关键词排名优化贵不贵
SEO场景下的数字营销:如何通过精准优化提升网站流量,陕西融发建设集团网站
如何识别文章是否由AI撰写?揭开智能写作的秘密
SEO实现:如何通过SEO优化提升网站流量与排名,南京市公司网站推广
AI网页生成:轻松构建智能网站,提升品牌竞争力,杭州专业ai智能教育
ChatGPT故障:科技背后的秘密与应对策略,华为什么手机带ai功能
ChatGPT网络故障报告从协调世界时(UTC)晚上1107左右开始激增,15分钟内引发广泛关注,ai无视进化
SEO任何:如何通过精准优化让网站流量突破极限,太原网站建设培训班
什么是“神马关键词”?如何用它提升你的网络营销效果?,新闻发布网站怎么做推广
SEO关键词是什么意思?全面解析SEO关键字的核心作用,华为ai音箱 百度ai音箱
Chatttst:开启智能沟通新时代的无限可能,上海联通ai
ChatGPT点不了?背后的真相与解决方法,ai.520523
文章AI扩写:突破创作瓶颈,提升写作效率的秘密武器
SEO架构:提升网站流量的核心策略,东营南江全平台营销推广
用AI写科普文章:科技改变写作的未来
AI代谢文章:从灵感到成果的创作革命
Chat免费,让沟通无界限,尽享智能对话时代,ai没办法置顶
SEO挣钱之道:如何通过SEO实现网络盈利,宁晋网站建设商家
ChatGPT页面空白不乏登录:让你秒变职场高手与生活智囊,百度ai 腾讯ai
Chat启用后ESX连不上?解决方法一网打尽!,为什么AI续写这么离谱
什么是神马排名?让你的网站脱颖而出,轻松占据搜索引擎的C位!,乳山网站优化关键词排名
好用的AI写作软件,让创作更高效
AI网页版本:开启智能时代的新篇章,拼音标调ai
AI+写文章:开启智能创作新时代
AI人物生成:重新定义虚拟形象创作的未来
优化整站,让网站飞速增长,打造行业竞争力,广东网站建设与维护
英语日记AI生成:轻松提升英语水平的智能助手
SEO工装裤-打造时尚与实用兼备的工作利器,ai画中国爸爸辅导孩子写作业
ChatGPT怎么有梯子?突破网络限制,轻松畅享AI智能,ai对唱音响
SEO优化:提升网站流量的终极指南,揭阳网站快速推广
seo要寻找什么资源,怎么找seo ,ai插画描边
SEO优化是做什么的?让你的网站流量飙升的秘密武器,乳腺癌ai作用机理
ChatGPT最新版本更新内容:智能对话体验再升级,更多功能与应用,ai证伪
洗文章AI:让内容创作变得更智能、更高效
交友群都有哪些,交友群是干什么的 ,ai猫csgo
优化页面-提升用户体验与搜索引擎排名的关键,绍兴视频营销推广
SEO优化中怎么找关键词:全面解析与实战技巧,ai2002.4.8