排序算法-(冒泡、选择、插入算法)

运行效率较慢的三大排序算法:冒泡、选择与插入算法,时间复杂度都为O(n2),运行效率较慢。

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)

排序算法-(冒泡、选择、插入算法)#python 代码实现如下所示:

li=[2,1,4,5,7,8,9,5,3]#冒泡算法(升序算法)O(n2)import randomfrom cal_time import *@cal_timedef bubble_sort(li):    for i in range(len(li)-1):  #第i趟        exchange=False        for j in range(len(li)-i-1): #无序区域为n-i-1            if li[j]>li[j+1]:                li[j],li[j+1]=li[j+1],li[j]                exchange=True        #print(li)        if not exchange:            return li#li=[random.randint(0,10000) for i in range(1000)]print(li)print("冒泡排序算法的排序结果为:{}".format(bubble_sort(li)))#选择排序(每次遍历找最小值,然后放各自的位置上去)#1-1不足选择排序算法:占用内存,复杂度高O(n2)def select_sort_simple(li):    li_new=[]  #一个重新的新列表,多出来一个内存占用,不推荐使用    for i in range(len(li)):        min_val=min(li) #复杂度为O(n)        li_new.append(min_val)        li.remove(min_val) #复杂度为O(n)    return li_newprint("选择排序算法的排序结果为:{}".format(select_sort_simple(li)))#选择算法时间复杂度为O(n2)def select_sort(li):    for i in range(len(li)-1):  #i是第i趟,总共需要n-1趟        min_loc=i        for j in range(i+1,len(li)):            if li[j]<li[min_loc]:                min_loc=j        li[i],li[min_loc]=li[min_loc],li[i]        print(li)li=[2,1,4,5,7,8,9,5,3]print(li)select_sort(li)#插入排序算法O(n2)def insert_sort(li):    for i in range(1,len(li)): #i表示摸到的次序和牌        tmp=li[i]        j=i-1                  #指的是手里的牌        while j>=0 and li[j]>tmp:            li[j+1]=li[j]            j=j-1        li[j+1]=tmp        print(li)li=[2,1,4,5,7,8,9,5,3]print(li)insert_sort(li)运行效果如下:

排序算法-(冒泡、选择、插入算法)