Python冒泡排序,插入排序,快速排序

冒泡排序
其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。一直重复这个过程,直到没有任何两个相邻的元素可以交换,就表明完成了排序。

 def bubble_sort(lst):
     n = len(lst)
     for i in range(n):
         for j in range(1, n - i):
             if lst[j - 1] > lst[j]:
                 lst[j - 1], lst[j] = lst[j], lst[j - 1]
     return lst

 lst=[2,3,4,1,5,9,6,0]
 print(bubble_sort(lst))

插入排序
对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增 1 的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。

def insert_sort(lst):
    n=len(lst)
    for i in range(n):
        minnum=lst[i]
        for j in range(i+1,n):
            if minnum>lst[j]:
                minnum,lst[j]=lst[j],minnum
            lst[i]=minnum
    return lst

lst=[2,3,4,1,5,9,6,0]
print(insert_sort(lst))

快速排序

快速排序首先任意选取一个数据(通常选待排序列表中的第一个数)作为基准数据,将待排序列表中的数据分割成独立的两部分,所有比基准数据小的数都放到它左边,所有比基准数据大的数都放到它右边,此时基准数据排序完成,第一轮快速排序完成。然后再按此方法对两部分的数据分别进行快速排序,整个排序过程可以递归进行,直到被分割的数据只有一个或零个时,递归结束,列表排序完成。

def fast_sort(lst):
    if len(lst)<=1:
        return lst
    leftnum=[]
    rightnum=[]
    mindium=[]
    key=lst[0]
    for i in range(0,len(lst)):
        if key>lst[i]:
            leftnum.append(lst[i])
        elif key<lst[i]:
            rightnum.append(lst[i])
        else:
            mindium.append(lst[i])
    return fast_sort(leftnum)+mindium+fast_sort(rightnum)

lst=[2,3,4,1,5,9,6,0]
print(fast_sort(lst))

你可能感兴趣的:(python,排序算法,算法)