python之排序算法

时间:2022-02-10 13:38:38

排序是每个语言都需要学会的,不管是c++、java还是python,套路都是类似的

python中也有自带的排序函数sort,直接使用也可

闲来无事写了几个排序算法,各不相同

1、每次遇到最小的数都交换

list1 = [56,34,87,3,59,10,3543,98]

def sortList(listTest = None):
length = len(listTest)
for i in range(length):
for j in range(i+1,length):
if listTest[i] > listTest[j]:
listTest[i],listTest[j] = listTest[j],listTest[i] #直接交换
return listTest ls = sortList(list1)
print(ls)

这种方法会频繁进行交换操作

2、一次循环记录最小值的下标,一次循环只交换一次

list1 = [56,34,87,3,59,10,3543,98]

def sortList(listTest = None):
length = len(listTest)
for i in range(length):
temp = i #记录最小值的下标
for j in range(i+1,length):
if listTest[temp] > listTest[j]:
temp = j
print(temp)
if temp != i: #如果第一个不是最小的,那么就交换
listTest[i],listTest[temp] = listTest[temp],listTest[i]
return listTest ls = sortList(list1)
print(ls)

这种就没有频繁交换了,但要每次记录最小值下标

3、不需要交换,使用新list记录最小值

list1 = [56,34,87,3,59,10,3543,98]

def sortList(listTest =None):
length = len(listTest)
listTemp = [] #记录每次循环最小值
for i in range(length):
minTemp = listTest[0]
for j in range(1,length):
if minTemp > listTest[j]:
minTemp = listTest[j]
length -= 1
listTest.remove(minTemp) #删除最小值
listTemp.append(minTemp) #记录最小值
return listTemp ls = sortList(list1)
print(ls)