python之排序算法

Posted 水里的芋头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于python之排序算法的主要内容,如果未能解决你的问题,请参考以下文章

八大排序之快速排序算法-python实现

python 数据结构与算法之排序(冒泡,选择,插入)

选择排序之python

算法导论之所有排序算法的Python实现

Python实现排序算法之快速排序

排序算法之冒泡排序