最近复习一下排序算法,从简单的开始,陆续写上来
一:冒泡排序
冒泡排序总的平均时间复杂度为 ,是一种稳定排序算法
import random
def BubbleSort(arr):
for i in range(0,len(arr)):
for j in range(i+1,len(arr)):
if arr[i] > arr[j]:
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
print("排序后:",arr)
if __name__ == '__main__':
arr = []
x = random.randint(2,20)
for i in range(0,x):
arr.append(random.randint(1,1000))
print("排序前:",arr)
BubbleSort(arr)
冒泡算是基础入门的算法,理解起来也相对简单
二:选择排序
选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
import random
def SelectSort(arr):
for i in range(0,len(arr)):
#获取最小数字下标
min_index = i
for j in range(i+1,len(arr)):
#如果出现更小数字,交换下标
if arr[min_index] > arr[j]:
min_index = j
#如果min_index改变了说明下标i代表的不是最小数,和最小数交换
if i != min_index:
temp = arr[i]
arr[i] = arr[min_index]
arr[min_index] = temp
print("排序后:",arr)
if __name__ == '__main__':
arr = []
x = random.randint(2,20)
for i in range(0,x):
arr.append(random.randint(1,1000))
print("排序前:",arr)
SelectSort(arr)
动图来自菜鸟教程,多谢。