Python 排序算法,简单选择排序,冒泡法,插入排序

#排序
import random
#简单选择排序
def sort1(lst):
    for i in range(len(lst)):
        minIndex = i
        for j in range(i+1,len(lst)):
            if lst[j] < lst[minIndex]:
                minIndex = j
        if minIndex != 1:
            lst[minIndex],lst[i] = lst[i],lst[minIndex]
    return lst
#冒泡法
def sort2(lst):
    for i in range(len(lst)):
        flag = True
        for j in range(len(lst)-1-i):
            if lst[j] > lst[j+1]:
                lst[j],lst[j+1] = lst[j+1],lst[j]
                flag = False 
        if flag: break
    return lst
#插入排序
def sort3(lst):
    lst = [0] + lst    #sentry,*origin = nums   保留原数据origin,*收集后为数组
    for i in range(1,len(lst)):
        lst[0] = lst[i]
        j = i - 1
        while lst[j] > lst[0]:
            lst[j+1] = lst[j]
            j -= 1
        lst[j+1] = lst[0]
    return lst[1:]
for i in range(1,len(nums)):     #插入排序,不在开头加哨兵位
    tmp = nums[i]
    j = i - 1
    while nums[j] > tmp:
        nums[j+1] = nums[j]
        j -= 1
        if j == -1:                #插入排序,效率低一点,循环语句内少放语句
            break
    nums[j+1] = tmp
delta = (datetime.da
#插入排序for写法,
def inter(lst):
    for i in range(len(lst)):
        current = lst[i]
        j = 0
        for j in range(i-1,-1,-1):
            if current > lst[j]:
                lst[j+1] = lst[j]
            else:
                lst[j+1] = current
                break
        else:
            lst[j] = current
    return lst
#插入加冒泡
def inter1(lst):
    for i in range(len(lst)):
        for j in range(i-1,-1,-1):
            if lst[j+1]< lst[j]:
                lst[j+1],lst[j] = lst[j],lst[j+1]
            else:
                break
    return lst




猜你喜欢

转载自blog.csdn.net/qq_33287645/article/details/79911232