小言_互联网的博客

5大排序算法python实现

400人阅读  评论(0)

冒泡

def bubble_sort(array):
    n = len(array)
    for i in range(n):  # i从0到n
        for j in range(1, n-i):  # 1开始,即j-1=0开始
            if array[j-1] < array[j]:
                array[j-1], array[j] = array[j], array[j-1]
    return array

选择

def select_sort(array):
    n=len(array)
    for i in range(n):
        mindex=i
        for j in range(i+1,n):
            if array[mindex] > array[j]:
                mindex = j
        array[i], array[mindex]=array[mindex], array[i]
    return array

插入

def insert_sort(array):
    for i in range(1, len(array)):
        key = array[i]
        j = i - 1
        while j >= 0 and key < array[j]:
            array[j + 1] = array[j]
            j -= 1
        array[j + 1] = key
    return array
def insert(l):
    for i in range(1,len(l)):
        key=l[i]
        for j in range(i):
            if l[j]>key:
                l.pop(i)
                l.insert(j,key)
                break
    return l

归并

def mergeSort(arr):
    import math
    if(len(arr)<2):
        return arr
    middle = math.floor(len(arr)/2)
    left, right = arr[0:middle], arr[middle:]
    return merge(mergeSort(left), mergeSort(right))

def merge(left,right):
    result = []
    while left and right:
        if left[0] <= right[0]:
            result.append(left.pop(0))
        else:
            result.append(right.pop(0))
    while left:
        result.append(left.pop(0))
    while right:
        result.append(right.pop(0))
    return result

快速

def quick(l):
    if len(l)<2:
        return l
    par=l[0]
    low=[x for x in l[1:] if x<=par]
    high=[x for x in l[1:] if x>par]
    return quick(low)+[par]+quick(high)

 


转载:https://blog.csdn.net/qq_40415753/article/details/102553341
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场