python算法与数据结构(15)冒泡排序,选择排序,插入排序

1冒泡排序
时间复杂度n**2

import random

def bubble_sorted(list):
    n = len(list)
    for j in range(0, n - 1):  # 最后一次不用排序
        for i in range(0, n - 1 - j):  # 每轮排序后面j位已经排好了。
            if list[i] > list[i + 1]:
                list[i], list[i + 1] = list[i + 1], list[i]
    return list

def test_bubble_sorted():
    seq = list(range(10))
    random.shuffle(seq)
    sorted_seq = sorted(seq)
    bubble_sorted(seq)
    assert seq == sorted_seq

2选择排序
让第一个数作为最小值,对比一遍,找出最小的,交换位置,每次找最小的交换位置。时间复杂度n**2

"""选择排序"""
def select_sort(seq):
    n = len(seq)
    for i in range(n-1):
        min_idx = i
        for j in range(i+1, n):
            if seq[j] < seq[min_idx]:
                min_idx = j
        if min_idx != i:
            seq[i], seq[min_idx] = seq[min_idx], seq[i]
    return seq

def test_select_sort():
    seq = list(range(10))
    random.shuffle(seq)
    sorted_seq = sorted(seq)
    select_sort(seq)
    assert seq == sorted_seq

3插入排序
从第2个开始和第一个比较,

# 插入排序,
def insert_sort(seq):
    n = len(seq)
    for i in range(1, n):
        value = seq[i]
        pos = i
        while pos > 0 and value < seq[pos - 1]:
            seq[pos] = seq[pos - 1]
            pos -= 1
        seq[pos] = value

def test_insert_sort():
    seq = list(range(10))
    random.shuffle(seq)
    sorted_seq = sorted(seq)
    insert_sort(seq)
    assert seq == sorted_seq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值