一,冒泡排序:

  • 是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个,如果他们的排序错误就把他们交换过来。
  • 冒泡排序是稳定的(所谓稳定性就是两个相同的元素不会交换位置)
  • 冒泡排序算法的运作如下:
    • 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个
    • 对每一对相邻元素同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素就是最大数
    • 针对所有的元素重复以上的步骤,除了最后一个。
    • 持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较
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_ = 0
      for 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_ = i
      	if num_ != max_:
      		seq[j], seq[max_]  = seq[max_], seq[j]
      	num_ += 1
      print(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]
      

        

        

  

44.python排序算法(冒泡+选择)的更多相关文章

  1. Python排序算法之选择排序定义与用法示例

    Python排序算法之选择排序定义与用法示例 这篇文章主要介绍了Python排序算法之选择排序定义与用法,简单描述了选择排序的功能.原理,并结合实例形式分析了Python定义与使用选择排序的相关操作技 ...

  2. python排序算法-冒泡和快速排序,解答阿里面试题

    ''常见的排序算法\ 插入排序/希尔排序/直接排序/堆排序 冒泡排序/快速排序/归序排序/基数排序 给定一个列表,将这个列表进行排序,要求:> 时间复杂度要小于O(n^2) 复杂度:1.时间复杂 ...

  3. Python排序算法之选择排序

    选择排序 选择排序比较好理解,好像是在一堆大小不一的球中进行选择(以从小到大,先选最小球为例): 1. 选择一个基准球 2. 将基准球和余下的球进行一一比较,如果比基准球小,则进行交换 3. 第一轮过 ...

  4. python排序算法实现(冒泡、选择、插入)

    python排序算法实现(冒泡.选择.插入) python 从小到大排序 1.冒泡排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(len(s)) ...

  5. python 排序算法总结及实例详解

    python 排序算法总结及实例详解 这篇文章主要介绍了python排序算法总结及实例详解的相关资料,需要的朋友可以参考下 总结了一下常见集中排序的算法 排序算法总结及实例详解"> 归 ...

  6. 带你掌握4种Python 排序算法

    摘要:在编程里,排序是一个重要算法,它可以帮助我们更快.更容易地定位数据.在这篇文章中,我们将使用排序算法分类器对我们的数组进行排序,了解它们是如何工作的. 本文分享自华为云社区<Python ...

  7. 八大排序算法~简单选择排序【记录下标k变量的作用】

    八大排序算法~简单选择排序[记录下标k变量的作用] 1,思想:打擂台法,数组中的前n-1个元素依次上擂台"装嫩",后边的元素一个挨着一个不服,一个一个上去换掉它 2,优化:通过记录 ...

  8. python排序算法之冒泡,选择,插入

    1.参考 一本关于排序算法的 GitBook 在线书籍 <十大经典排序算法>,使用 JavaScript & Python & Go 实现 2.冒泡排序:两两比较,互换位置 ...

  9. Python排序算法——选择排序

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10787340.html 一.选择排序(Sele ...

随机推荐

  1. 自定义错误throw

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 在 Linux 下使用 scp 命令

    将文件或文件夹从网络上的一个主机拷贝到另一个主机当中去. here:在 Linux 下使用 scp 命令 摘要: scp 是安全拷贝协议(Secure Copy Protocol)的缩写, scp 是 ...

  3. Win10远程桌面 报错:CredSSP加密Oracle修正……

    解决方法: 运行 gpedit.msc 本地组策略: 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并选择易受攻击. 参考: https://blog.c ...

  4. Codeforces Round #592 (Div. 2)【C题】{补题ING}

    思路:x,y,z肯定不为负数xw+dy=p,直接枚举系数较小的y即可,y的范围:y<w,因为大于w的时候,不如去增加x,这样x+y的和还能保持尽可能小. /* x*w+y*d=p; x*w+(K ...

  5. P2634 [国家集训队]聪聪可可 点分治

    思路:点分治 提交:1次 题解: 不需要什么容斥...接着板子题说: 还是基本思路:对于一颗子树,与之前的子树做贡献. 我们把路径的权值在\(\%3\)意义下分类,即开三个桶\(c[0],c[1],c ...

  6. Emacs:十六进制模式下跳转到特定地址

    造冰箱的大熊猫@cnblogs 2019/9/18 Emacs提供的十六进制模式(M-x hexl-mode)以十六进制格式显示文件内容,对于分析图像等二进制数据文件非常方便.在此模式下,我们可以使用 ...

  7. while练习

    题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40万之 ...

  8. CONTINUE...? ZOJ - 4033

    CONTINUE...? ZOJ - 4033 题解:先计算一下总数sum是否是偶数,如果不是则不能分出来,如果是则从后面开始分,先把人分到1.3组,分完sum / 2这些人,如果恰好能够分成零,那么 ...

  9. 关于openstack 专业博主地址.后续更新

    首先官方文档要放的 https://docs.openstack.org/ 关于导入镜像方面说的很详细的. https://www.cnblogs.com/liawne/p/9322221.html ...

  10. Python流程控制和缩进

    我们语文学写作文,有如果- -,那么- -的句式,同样Python也有这样的句式: #如何这个条件成立了,那就执行下面这个语句 if 条件: 内容1 内容2 else: 内容3 几点说明: