蓝桥杯算法之排序算法

提示:本系列博客是对bilibili算法课程《算法很美》的python笔记总结,其中吸收不少优秀博主的原创博客,由于本人总结未附上对应的博客地址,若发现本文博客内容与您发表的博客内容吻合,请您联系作者,给您添加引用地址。
bilibili课程地址


前言

排序算法虽然已经内置在python函数,但其排序原理的学习对算法入门帮助良多

简单排序算法可分为冒泡排序、选择排序、插入排序与希尔排序,下面对排序算法中的冒泡排序和选择排序进行逐一介绍及代码展示。代码编译环境:python 3.8.6


1.冒泡排序

1)原理介绍

冒泡排序的时间复杂度是O[n*n],是一种最简单的,最暴力的排序方法。它的工作原理是每次循环两两比较,将将大的值一次往后边放,最后完成升序排序。

n个数n-1次冒泡
原理:内循环每一次排序将列表中前后两位元素交换呈现大元素后移趋势,外循环每一次排序将最大元素移动至最后位并通过内循环固定。

2)代码实例

#冒泡排序优化版,避免已经排好的序列重排的问题
def bubble_sort1(nums):
    for i in range(len(nums) - 1):  
        flag = False  # 改进后的冒泡,设置一个flag作为一个标志位
        for j in range(len(nums) - i - 1):   
            if nums[j] > nums[j + 1]:
                nums[j], nums[j + 1] = nums[j + 1], nums[j]
                flag = True
        if not flag:
            return nums  #对排好的序列,提前终止

    return nums  # 整个数据全部运行完排好的序列
#a=[2,5,3,4,56,32,45,7]
#bubble_sort1(a)
#print(a)

2.选择排序

1)原理介绍

它的复杂度依然是O(n*n),但是性能比冒泡性能略好,它的排序原理是每次遍历都将最小值放在当前位置。

原理:每一次排序找到最小值放在第一位并固定

2)代码实例

lists=list(map(int,input().split()))
def choice_sort(lists):
    for i in range(len(lists)):
        for j in range(i,len(lists)):
            if lists[i]>lists[j]:
                lists[i],lists[j]=lists[j],lists[i]
    return lists
#print(choice_sort(lists))

总结

本文介绍了排序算法中的冒泡排序和选择排序及代码,建议读者配合视频教学内容加以使用,下一篇博客为插入排序与希尔排序的介绍。(作者有全新的蓝桥杯学习资料,包括但不限于部分收费课程,有意请私)

猜你喜欢

转载自blog.csdn.net/qq_44840741/article/details/124066169
今日推荐