python实现常用排序算法(冒泡、插入、选择、希尔和快排)

最近在学习算法时,了解到了一些关于排序的算法实现,在这里我整理了一下,并用python实现,具体实现请看下面代码:

(一)、冒泡排序算法

def pop_sort(alist)
    i = 0
    while i < len(a) - 1:
        count = 0
        for j in range(len(alist) - 1 - i):
            if alist[j] > alist[j + 1]:
                alist[j], alist[j + 1] = alist[j + 1], alist[j]
                count += 1
        if count == 0:
            break
        i += 1

(二)、插入排序

def insert_sort(mylist):
    if len(mylist) <= 2:
        return mylist

    for i in range(len(mylist)):
        for j in range(i, 0, -1):
            if mylist[i] < mylist[j]:
                mylist[i], mylist[j] = mylist[j], mylist[i]
    return mylist

(三)、选择排序

def choose_sort(aList):
    for i in range(len(aList)):
        a_min = i
        for j in range(i, len(aList)):
            if aList[j] < aList[a_min]:
                a_min = j
        if i != a_min:
            aList[i], aList[a_min] = aList[a_min], aList[i]

(四)、希尔排序

def shell_sort(alist):
    n = len(alist)
    gap = n // 2
    while gap >= 1:
        for i in range(gap, n):
            j = i
            while (j - gap) >= 0:
                if alist[j] < alist[j - gap]:
                    alist[j], alist[j - gap] = alist[j - gap], alist[j]
                    j -= gap
                else:
                    break
        gap //= 2

(五)快排

def quick_sort(alist, start, end):
    if start >= end:
        return
    mid = alist[alist[start]]
    left = start
    right = end
    while left < right:
        while left < right and alist[right] >= mid:
            right -= 1
        alist[left] = alist[right]
        while left < right and alist[left] <= mid:
            left += 1
        alist[right] = alist[left]
    alist[left] = mid

    quick_sort(alist, start, left - 1)
    quick_sort(alist, right+1, end)

 

你可能感兴趣的:(python数据结构)