排序——冒泡,选择,插入排序

冒泡排序和插入排序的时间复杂度O(n)~O(n2),而选择排序的时间复杂度为O(n2)。
冒泡排序:作为编程超级入门级排序手段,思想比较简单。数组的每个元素都与后一个进行比较,第一轮可以确定末尾的位置的数值。经过n轮可以确定序列

def bubble_sort(alist):
    for i in range(len(alist)-1,0,-1):
        for j in range (i):
            if alist[j]>alist[j+1]:
                alist[j],alist[j+1]=alist[j+1],alist[j]

选择排序:冒泡排序是针对数值来说的, 而选择排序我感觉是针对位置来说,从最小的或者最大的开始确定每个数值的位置,对于增序来说,最小的值必定排在第一个位置。

def selection_sort(alist):
    n=len(alist)
    for i in range(n-1):
        min_index=i
        for j in range(i+1,n):
            if alist[j]<alist[i]:
                min_index=j
        if min_index !=i:
            alist[i],alist[min_index]=alist[min_index],alist[i]

插入排序:插入排序的实现,要保证排序过的序列一定正确的序列,然后在未排序序列中的元素依次插入。

def insert_sort(alist):
    for i in range(1,len(alist)):
        for j in range(i,0,-1):
            if alist[j]<alist[j-1]:
                alist[j],alist[j-1]=alist[j-1],alist[j]

猜你喜欢

转载自blog.csdn.net/weixin_40732844/article/details/82494042
今日推荐