冒泡排序和选择排序和插入排序

'''
原理:
    balabala

'''
import random

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

# def test_bubble_sort():
    # seq = list(range(10))
    # random.shuffle(seq)
    # sorted_seq = sorted(seq)
    # bubble_sort(seq)
    # assert seq == sorted_seq
    # assert 0
    
'''选择排序'''
def select_sort(seq):
    n = len(seq)
    for i in range(n-1):
        min_idx = i
        for j in range(n-1-i):
            if seq[j] < seq[min_idx]:
                mid_idx = j
        if min_idx != i:
            seq[i], seq[min_idx] = seq[min_idx], seq[i]
# def test_select_sort():
    # seq = list(range(10))
    # random.shuffle(seq)
    # sorted_seq = sorted(seq)
    # select_sort(seq)
    # assert seq == sorted_seq
    # assert 0 
    
'''插入排序'''
def insertion_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] = seq[pos-1], seq[pos]
            pos -= 1
        seq[pos] = value
def test_insert_sort():
    seq = list(range(10))
    random.shuffle(seq)
    sorted_seq = sorted(seq)
    insertion_sort(seq)
    assert seq == sorted_seq
    assert 0 

 

posted @ 2020-05-05 02:44  SBJBA  阅读(92)  评论(0)    收藏  举报