标签:交换 test 没有 需要 交换操作 nbsp remove end length
排序是每个语言都需要学会的,不管是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)
标签:交换 test 没有 需要 交换操作 nbsp remove end length
原文地址:https://www.cnblogs.com/watertaro/p/9424824.html