lowB 三人组

lowB 三人组

1.冒泡排序

2.选择排序

3.插入排序

1.冒泡排序

#冒泡排序法:竖看,一一比较,把大的放在最顶。 每两个相邻的数,如果前边的比后边大就交换这两个数。
'''
分析:
    1.本来为无序区,没进行一趟冒泡,就有一位进入有序区,无序区就-1
        2.正常来说:一个列表需要走N趟冒泡,但是,最后一位数其实是不需要走了,就是 N-13.i 表示趟数,j 表示 箭头
    2.时间复杂度:O(N2)
'''
import random

def bubble_sort(x):
    for i in range(len(x)-1):
        change = False
        for j in range(len(x)-i-1):
       if x[j] > x[j+1]: x[j],x[j+1] = x[j+1],x[j] change =True if not change: break li = list(range(10)) random.shuffle(li) print(li) bubble_sort(li) print(li)

结果:

2.选择排序

# 选择排序法: 横看,把最小的放在最左边
'''
关键点:
    无序区
    
    最小数额位置
'''
import random

def select_sort(x):
    for i in range(len(x)-1):
        min_loc = i
        for j in range(i+1,len(x)):
            if x[j] < x[min_loc]:
                min_loc = j
        if min_loc !=i:
            x[i],x[min_loc] = x[min_loc],x[i]

li = list(range(10))
random.shuffle(li)
print(li)
select_sort(li)
print(li)

结果:

3.插入排序

# 插入排序法: 先一个有序区数字,把无序区的数依次插入到有序区,直到无序区没有为止
'''
关键点: 
    摸到的牌
    手里的牌

'''
import random
def insert_sort(x):
    for i in range(1,len(x)):
        tmp = x[i]
        j = i-1
        while j >=0  and tmp < x[j]:
            x[j+1] = x[j]
            j = j-1
        x[j+1] = tmp

li = list(range(10))
random.shuffle(li)
print(li)
insert_sort(li)
print(li)

结果:

猜你喜欢

转载自www.cnblogs.com/zhongbokun/p/9060934.html