0
点赞
收藏
分享

微信扫一扫

学习数据结构笔记—基础排序三人组,冒泡,选择排序和插入排序

北冥有一鲲 2022-03-16 阅读 50

排序当中最基础也是必须要会默写的三种排序方式,冒泡,选择排序和插入,一个个来

冒泡。原因很简单,从第一个位置开始,当后一个位置的数比前一个位置小的时候,交换两个位置,如果大于直接指针向后移动一个位置

# 冒泡排序

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

思考,当一次已经完成排序,后面就不用继续排序啦。可以做个哨兵进行判断

def bubble_sort(li):
    for i in range(len(li) -1 ):
        for j in range(len(li) -i -1):
            exchange= False
             if li[j] > li[j+1]:
                li[j], li[j+1] = li[j+1], li[j]
                exchange = True
             if not exchange:
                return 

选择排序

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

插入排序,存在有已经完成插入区和准备插入区

def insert_sort(li):
    for i in range(1, len(li)):
        tmp = li[i]  # 把手里的牌独立出来
        j = i - 1 # 已经排序好的牌的下标
        while j >= 0 and li[j] > tmp:
            li[j+1] = li[j]            
            j -= 1
        li[j+1] = tmp
        
举报

相关推荐

0 条评论