def bubble_sort(list):
# 获取列表的长度
long = len(list)
# 使用 while 循环对列表进行排序
while long > 1:
# 对列表进行一次遍历
for i in range(long):
# 获取当前位置的元素
needle = list[i]
# 判断当前位置是否为最后一个位置
if i != long - 1:
# 如果不是最后一个位置,判断当前位置的值是否比下一个位置的值小
if list[i] < list[i + 1]:
# 如果当前位置的值比下一个位置的值小,则交换这两个位置的值
list[i] = list[i + 1]
list[i + 1] = needle
needle = list[i]
else:
# 如果当前位置已经是最后一个位置,跳出循环
break
# 对列表进行下一轮排序,排除已经排好序的元素
long = long - 1
# 返回排好序的列表
return list
冒泡排序
def select_sort(list):
# 获取列表的长度
long = len(list)
# 新建一个空列表用于存储排序后的元素
new_list = []
# 使用 while 循环对列表进行排序
while long > 1:
# 遍历列表
for i in range(long):
# 找到列表中最大的元素并把它添加到新列表中
needle = list[0]
for j in range(long):
if j != long - 1:
if needle < list[j + 1]:
needle = list[j + 1]
else:
break
new_list.append(needle)
# 把最大元素从原列表中移除
list.remove(needle)
# 更新列表长度,排除已经排好序的元素
long = long - 1
# 返回排序后的新列表
return new_list
选择排序
def insert_sort(list):
# 遍历列表,并从第二个元素开始进行插入排序
for i in range(1, len(list)):
# 获取当前位置的元素并存储到 tmp 变量中
tmp = list[i]
# 定义一个指针 j 并初始化为当前位置的前一个位置
j = i - 1
# 循环查找需要插入的位置,并进行元素的移动
while (j >= 0 and list[j] > tmp):
list[j + 1] = list[j] # 将当前位置向右移动一位
j = j - 1 # 继续向左查找
# 找到需要插入的位置,将 tmp 插入到该位置
else:
list[j + 1] = tmp
# 返回排序后的列表
return list
插入排序
时间复杂度:
名称 | 时间复杂度 |
冒泡排序 | O(n^2) |
插入排序 | O(N)-O(n^2) |
选择排序 | O(1)-O(n) |