RUN__IT # 常见的几种排序python版(冒泡,选择,插入,希尔,快速,归并)

排序与查找

冒泡排序

def bubble1_sort(li):
    """冒泡排序"""
    n = len(li)
    count = 0
    # 控制循环次数
    for i in range(n-1):
        for j in range(n-1-i):
            # 若当前元素比后一个大,就交换位置
            # 一直和后一个元素比较,把最大的往后沉
            if li[j] > li[j+1]:
                li[j+1],li[j]  = li[j],li[j+1]
                count += 1
        # 如果没有进行交换,则说名是有序的,直接结束循环
        if count == 0:
            break


if __name__ == '__main__':
    list1 = [17,14,12,5,11,24,2,6,15,19,8,3,9]
    bubble1_sort(list1)
    print(list1)

选择排序

def choose_sort(li):
    """选择排序"""
    n = len(li)
    # 控制循环次数
    for j in range(0,n-1):
        min_index = j
        # j之前是有序的,之后是无序的
        for i in range(j+1,n):
            # 如果是有比j小的元素就把这个元素的索引赋值给j
            if li[i] < li[j]:
                j = i
        # 如果进行了比较并改变了j就进行交换元素,若没有变化,说明是对应的位置,不进行交换减小时间复杂度
        # 把索引是j的元素换到min_index这个位置
        if min_index != j:
            li[j],li[min_index] = li[min_index],li[j]


if __name__ == '__main__':
    list1 = [17,14,12,5,11,24,2,6,15,19,8,3,9]    
    choose_sort(list1)
    print(list1)

猜你喜欢

转载自blog.csdn.net/RUN__IT/article/details/88960288