2019独角兽企业重金招聘Python工程师标准>>>

个人有时候会把冒泡排序和选择排序搞混了,因为感觉它们之间的差别也没太大,如下是冒泡排序Python的代码:

class BubbleSort:def __init__(self):self.initArr()def initArr(self):self.arrInfo = [60, 61, 27, 91, 92, 44, 13, 20, 24, 14]def bubbleSortFromStartToEnd(self):length = len(self.arrInfo)for i in range(length):for j in range(length-i-1):if self.arrInfo[j] > self.arrInfo[j+1]:tmp = self.arrInfo[j]self.arrInfo[j] = self.arrInfo[j+1]self.arrInfo[j+1] = tmpdef bubbleSortFromEndToStart(self):length = len(self.arrInfo)for i in range(0,length):for j in range(length-1,i,-1):if self.arrInfo[j] < self.arrInfo[j-1]:tmp = self.arrInfo[j]self.arrInfo[j] = self.arrInfo[j-1]self.arrInfo[j-1] = tmpdef printResult(self):print self.arrInfoself.bubbleSortFromEndToStart()print self.arrInfo
BubbleSort().printResult()

如下是选择排序Python的代码:

class SelectSort:def __init__(self):self.initArr()def initArr(self):self.arrInfo = [60, 61, 27, 91, 92, 44, 13, 20, 24, 14]def selectSort(self):length = len(self.arrInfo)for i in range(length):position = ifor j in range(i,length):if self.arrInfo[position] > self.arrInfo[j]:position = jtmp = self.arrInfo[i]self.arrInfo[i] = self.arrInfo[position]self.arrInfo[position] = tmpdef printResult(self):print self.arrInfoself.selectSort()print self.arrInfo
SelectSort().printResult()

冒泡排序主要看bubbleSortFromEndToStart方法,该方法的效果和选择排序类似,唯一的区别是冒泡排序交换0~n-1次,而选择排序只交换一次。同时需要注意索引,排序里面很恶心的一点就是索引了,有时候按照伪代码来实现算法,效果不尽理想,一般很有可能也是出现在索引问题上。

转载于:https://my.oschina.net/u/272728/blog/227239

Python之冒泡排序和选择排序的比较相关推荐

  1. Python排序算法(一)冒泡排序、选择排序、插入排序

    今天总结一下Python中的排序算法.这篇文章有的排序算法是:冒泡排序.选择排序.插入排序. 冒泡排序 先看一下代码. ''' 冒泡排序 '''def bubble_sort(aList):n = l ...

  2. python基础:冒泡和选择排序算法实现

    冒泡排序和选择排序 首先引用一下百度百科对于冒泡算法的定义: 冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一 ...

  3. c语言排序需要插空的最小次数,C语言数组排序——冒泡排序、选择排序、插入排序...

    一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个--直到比较第n-1个和第n个,此时,每一次比较都 ...

  4. 算法与数据结构(冒泡排序,选择排序和插入排序的总结)

    冒泡排序,选择排序和插入排序的总结 在规模较小时,或者元素的有序性较高时,插入排序的时间复杂度可以接近 O(n) ,是上述三种排序里表现最好的 一.通过表格我们可以发现,冒泡排序的时间复杂度是要优于选 ...

  5. JavaSE(二十四)——冒泡排序、选择排序、直接插入排序以及二分查找

    文章目录 1. 冒泡排序 2. 选择排序 3. 直接插入排序 4. 二分查找 1. 冒泡排序 原理:数组元素两两比较,大的往后放,经过一轮比较后,最大元素在最后面,如此往复. 举例说明: 代码: // ...

  6. python算法与数据结构-选择排序算法(33)

    阅读目录 一.选择排序的介绍 二.选择排序的原理 三.选择排序的图解 四.选择排序总结 五.选择排序的python代码实现 六.选择排序的C语言代码实现 七.选择排序的时间复杂度 八.选择排序的稳定性 ...

  7. 冒泡排序、选择排序和插入

    冒泡排序.选择排序和插入排序代码如下: package cn.luxh.app.test;public class SimpleSortUtil {/*** 冒泡排序* 从小到大排序* 思路:* 1) ...

  8. C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)

    参考:C语言五大排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)动态演示 作者:一只青木呀 发布时间: 2020-09-09 20:18:43 网址:https://blog.csdn.net/ ...

  9. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...

    掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...

最新文章

  1. 苹果汽车高管几乎流失殆尽,一年损失7人,新年又有人被Meta挖走
  2. 2013秋东北计算机在线作业,2013秋奥鹏东北师范大学计算机应用基础第三次在线作业及答案.doc...
  3. 1.16 静态内部类
  4. JavaScript的表单事件
  5. 怎么转化大小写_亚马逊search term被限制,Search Terms只能写一行怎么办?
  6. etmvc mysql乱码_Etmvc学习文档
  7. 使用C#+Edge (Chromium)进行Web自动化测试
  8. 点到点 Ipsec *** 从一端能正常发起,另一端发起不成功的解决过程
  9. mysql query cache_MySQL Query Cache开启与否的必要性分析
  10. 三极管开关为什么工作在饱和区和截至区
  11. 骑士人才系统(qscms)微信公众号配置教程
  12. C51单片机实现流水灯的三种编程方法
  13. 16位算术逻辑运算实验
  14. Total Variation
  15. 使用keras框架训练神经网络时显卡内存使用很大很大的解决方案
  16. ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)
  17. 解决了,佳能R6相机DAT/MP4视频文件修复卡顿无声问题
  18. 判断字符串是否是对称字符串
  19. 3*3 数字拼图(去除无解的随机组合)
  20. 新浪财经隆重推出四大千万级财经博客

热门文章

  1. NoSQL数据库:从故障中恢复数据的原理
  2. C++学习日记1:VS2015环境下,创建基于对话框的MFC工程
  3. ScrollView常用属性汇总
  4. javascrip对表格的操作(三)
  5. 使用nlite制作集成驱动windows安装光盘及实践心得
  6. MySQL集群架构-DRBD+headbeat +lvs+keepalived
  7. 私有云中Kubernetes Cluster HA方案
  8. C++两种单例(饿汉式,懒汉式)
  9. 认识一下Android 事件分发机制
  10. centos cmake安装mysql_CentOS下使用cmake编译安装mysql