首页 技术 正文
技术 2022年11月14日
0 收藏 614 点赞 5,038 浏览 1316 个字

一,冒泡排序:

  • 是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个,如果他们的排序错误就把他们交换过来。
  • 冒泡排序是稳定的(所谓稳定性就是两个相同的元素不会交换位置)
  • 冒泡排序算法的运作如下:
    • 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个
    • 对每一对相邻元素同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素就是最大数
    • 针对所有的元素重复以上的步骤,除了最后一个。
    • 持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较
seq = [23,54,66,78,12,5,68,55]for j in range(len(seq) -1): ##告诉里面这个循环,你判断那两组    #j: 每一轮确定的不需要判断的数字个数    for i in range(len(seq) -1 -j):#最后这个判断完放到后面的数字,没有必要继续判断了        #多少次相邻的判断次数        if seq[i] > seq[i+1]:            ##最大的放到后面 升序            seq[i],seq[i + 1] = seq[i + 1],seq[i]print(seq)

运行结果:

E:\python学习资料\上课视屏\八阶段:春节后复习\节后复习-4>C:/python36/python.exe e:/python学习资料/上课代码编写/代码练习py/1111.py[5, 12, 23, 54, 55, 66, 68, 78]

二,时间复杂度:

  • 最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序接受。)  

  • 最坏时间复杂度:O(n2) (可以根据看循环的个数来判断n的几次方)
  • 稳定性:稳定

三,选择排序

  • 选择排序是一种简单直观的排序涮发
  • 选择排序不稳定
  • 它的工作原理如下:
    • 首先在末排序序列中找到最小(大)元素,存放到排序序列的起始位置(索引丶下标)
    • 然后,再从剩余末排序元素中继续寻找最小(大)元素
    • 然后放到已经排序序列的末尾
    • 以此类推,直达所有的元素排序完毕
      seq = [1,5,20,3,16,23,3213,34143,1804,3213,41284,33]#胜出者继续和后面的挑战者打#谁胜利,记录谁,#这一轮打完了,胜出者到头部#大数字 放后面, 升序num_ = 0for j in range(len(seq) - 1):max_ = num_ #先假定最牛的数据是这个索引# 控制每一次内层循环的判断起点# 不光记录了每一次循环取出来的不需要判断的数字个数# 就记录着当前的我要存放位置,冠军的宝座for i in range(j + 1,len(seq)):if seq[max_] < seq[i]:#20, 10, 100#max = 0#最大的放到后面 升序max_ = iif num_ != max_:seq[j], seq[max_]  = seq[max_], seq[j]num_ += 1print(seq)#O(n2) == 冒泡#少去了很多交换工作#选择排序不稳定

      运行结果:

      E:\python学习资料\上课视屏\八阶段:春节后复习\节后复习-4>C:/python36/python.exe e:/python学习资料/上课视屏/python排序算法/2.py[41284, 34143, 3213, 3213, 1804, 33, 23, 20, 16, 5, 3, 1]

        

        

  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,103
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,579
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,427
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,199
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,834
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,917