码迷,mamicode.com
首页 > 编程语言 > 详细

python之排序算法

时间:2018-08-05 11:48:05      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:交换   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)

 

python之排序算法

标签:交换   test   没有   需要   交换操作   nbsp   remove   end   length   

原文地址:https://www.cnblogs.com/watertaro/p/9424824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!