在处理数据时,排序是个常见需求。比如你有一堆考试成绩要从低到高排,或者想把购物清单按价格整理。这时候,选择排序算法就派上用场了。它不像快速排序那样复杂,也不需要额外空间,理解起来特别直观。
它是怎么工作的?
选择排序的核心思路很简单:在未排序的部分里找最小值,把它放到已排序部分的末尾。重复这个过程,直到所有元素都归位。
举个例子,你面前有五个数字:64, 25, 12, 22, 11。第一轮,找出最小的11,和第一个数64交换位置;第二轮,在剩下的数中找最小的12,它已经在正确位置;第三轮找22,依此类推。每一步都让数组更有序一点。
代码实现看看
下面是一个用 Python 实现的选择排序示例:
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_index = i
for j in range(i + 1, n):
if arr[j] < arr[min_index]:
min_index = j
arr[i], arr[min_index] = arr[min_index], arr[i]
# 使用示例
scores = [64, 25, 12, 22, 11]
selection_sort(scores)
print(scores) # 输出: [11, 12, 22, 25, 64]
适用场景和局限性
选择排序适合小规模数据或教学演示。它的优点是逻辑清晰、代码短,不需要额外内存。但问题也很明显:时间复杂度固定为 O(n²),不管数据原本有没有顺序,都要挨个比较。所以面对几千条以上的数据,它就显得慢了。
如果你只是给几十个学生成绩排序,或者写个小工具练手,选它没问题。可要是处理订单记录、用户评分这类大数据,就得考虑更高效的算法了。
尽管不够快,选择排序依然是理解排序思想的好起点。就像学做饭先学会煮蛋一样,简单但基础。