python实现冒泡排序、选择排序
冒泡排序
冒泡排序是一种简单的排序算法。它重复地遍历要排序的列表,比较相邻的元素并交换顺序错误的元素。这个过程会使得较大的元素逐渐“冒泡”到列表的末尾。
算法步骤:
- 从列表的第一个元素开始,比较相邻的两个元素。
- 如果前一个元素比后一个元素大,则交换它们。
- 对每一对相邻元素重复步骤1和2,直到最后一个元素。完成一轮遍历后,最大的元素已经位于列表末尾。
- 忽略最后一个元素,重复步骤1到3,直到所有元素有序。
Python实现冒泡排序
def bubble_sort(lst):
n = len(lst)
for i in range(n):
for j in range(0, n - i - 1):
if lst[j] > lst[j + 1]:
lst[j], lst[j + 1] = lst[j + 1], lst[j]
return lst
# 示例
lst = [64, 34, 25, 12, 22, 11, 90]
sorted_lst = bubble_sort(lst)
print("排序后的列表:", sorted_lst)
选择排序
选择排序是一种简单直观的排序算法。它的基本思想是每次从未排序部分中选择最小的元素,并将其放到已排序部分的末尾。
算法步骤:
- 从未排序部分中找到最小的元素。
- 将该元素与未排序部分的第一个元素交换位置。
- 重复步骤1和2,直到所有元素都已排序。
Python实现选择排序
def selection_sort(lst):
n = len(lst)
for i in range(n):
min_idx = i
for j in range(i + 1, n):
if lst[j] < lst[min_idx]:
min_idx = j
lst[i], lst[min_idx] = lst[min_idx], lst[i]
return lst
# 示例
lst = [64, 25, 12, 22, 11]
sorted_lst = selection_sort(lst)
print("排序后的列表:", sorted_lst)
这两种排序算法适用于小规模的数据集,因为它们的时间复杂度都是O(n^2)。在实际应用中,通常使用更高效的排序算法如快速排序或归并排序。