1. 排序算法概述:为什么我们需要这么多排序方法?
排序是计算机科学中最基础也最常用的操作之一。想象一下你有一堆杂乱无章的书籍,想要按照书名顺序排列——这就是排序算法要解决的问题。不同的排序方法就像不同的整理策略:有人喜欢先找最小的放最前面,有人喜欢把书分成几堆分别整理再合并。每种方法在不同场景下各有优劣。
在实际开发中,我们面对的数据千差万别:有时处理几乎有序的数据,有时面对完全随机的大数据集,有时内存有限,有时需要稳定排序(即相等元素的相对位置保持不变)。这就是为什么我们需要掌握多种排序算法,就像木匠需要不同的工具应对不同的木工活。
2. 七大经典排序算法详解
2.1 冒泡排序:最简单的入门算法
冒泡排序就像水中气泡上浮的过程。算法反复遍历列表,比较相邻元素,如果顺序错误就交换它们。每次遍历都会将当前最大的元素"冒泡"到正确位置。
python复制def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
注意事项:冒泡排序在最好情况下(已排序)时间复杂度为O(n),但平均和最差都是O(n²)。适合小规模数据或教学演示,实际应用中性能较差。
2.2 选择排序:每次找到最小元素
选择排序将数组分为已排序和未排序两部分,每次从未排序部分选出最小元素,放到已排序部分的末尾。
python复制def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
实操心得:虽然选择排序的时间复杂度始终是O(
解锁全文
加入我们的会员,获取最新、最热、最精彩的开发者技术内容