算法

一、选择排序

import random
import time

def selectionSort(li):
for i in range(len(li) - 1):
min = i #添加一个变量存储下标,这个是作为优化该排序
for j in range(i+1, len(li)):
if li[min] > li[j]:
min = j #第一次遍历后把最小的下标存储到min变量里
tmp = li[i] #把第一次遍历最小值替换
li[i] = li[min]
li[min] = tmp

if __name__ == "__main__":
li = list()
for i in range(20000):
li.append(random.randrange(30000))
start = time.time()
print(start)
selectionSort(li)
end = time.time()
print(end)

 二、插入排序

def insertionSort(li):
for i in range(1, len(li)): #从第二个元素开始往前面比较插入
tmp = li[i]
for j in range(i - 1, -1, -1): #和i前面一个数比较直到第0个
if li[j] > tmp:
li[j + 1] = li[j]
else:
li[j + 1] = tmp
break
else:
li[j] = tmp

if __name__ == '__main__':
li = [21, 19, 55, 33, 8]
insertionSort(li)
print(li)

三、冒泡排序

a = [21, 19, 55, 33, 8]
for i in range(len(a)-1):
for j in range(len(a) - i -1): #-1是指保留每次排序后最后一个数值不变动
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
print(a)
原文地址:https://www.cnblogs.com/Jweiqing/p/9029457.html