2025年09月27日
在C++项目开发中,我们经常使用STL的vector来存储数据,并使用库中的sort函数进行排序。但如果不了解排序算法“稳定性”的概念,就很容易掉入陷阱。
假设我们有一个vector,它已经按照学生的姓名进行了升序排序。现在,我们希望按照分数进行降序排序,但期望是:对于分数相同的学生,他们之间的原有顺序(即按姓名排好的顺序)能够得以保留。
2025年09月27日
技术博客:
https://github.com/yongxinz/tech-blog
同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。
本文用 Python 实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序。
2025年09月27日
知道Java和Python的默认排序算法是什么吗?这个算法叫作Timsort,由Tim Peters与2001年创建,是一种稳定高效的面向真实数据的排序算法。
Timsort是一种面向真实数据的高效排序算法,它不是在学术实验室中创建出来的。2001年,Tim Peters为Python创建了Timsort算法。Timsort算法首先对排序数据进行分析,然后根据分析结果来选择排序方式。
在该算法出现之后,就一直被作为Python、Java、Android平台和GNU Octave的默认排序算法。
2025年09月27日
快速排序也采用的是分而制之的思想。那么快速排序和归并排序的区别在什么地方呢?
归并排序是将所有的元素拆分成一个个排好序的数组,然后将这些数组再进行合并。
而快速排序虽然也是拆分,但是拆分之后的操作是从数组中选出一个中间节点,然后将数组分成两部分。
2025年09月27日
在网页和APP开发中,经常要处理列表数据排序。掌握基础的JavaScript排序算法是前端工程师的核心能力。这篇文章介绍五种最常用的排序方法,用简单语言和实际代码帮你彻底理解它们。
2025年09月27日
除了刚迈出校门找工作那会儿对基本排序算法还算“了然于心”,随着工作和时间的推移,当回头再来看这些基础的不能再基础的东西时,绝大多数人无法写出经典排序算法的核心代码,甚至连算法原理都忘了。我承认,自己就是这样的人,所以今天有空将常见的几种排序算法复习一下,写个笔记。一方面给自己一个“重新做人”的机会,另一方面也欢迎酷爱算法的朋友一起交流分享。