python之排序算法

 

排序是每个语言都需要学会的,不管是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)

 

posted @ 2018-08-05 10:59  水里的芋头  阅读(255)  评论(0编辑  收藏  举报