Python之冒泡排序和选择排序的比较
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之冒泡排序和选择排序的比较相关推荐
- Python排序算法(一)冒泡排序、选择排序、插入排序
今天总结一下Python中的排序算法.这篇文章有的排序算法是:冒泡排序.选择排序.插入排序. 冒泡排序 先看一下代码. ''' 冒泡排序 '''def bubble_sort(aList):n = l ...
- python基础:冒泡和选择排序算法实现
冒泡排序和选择排序 首先引用一下百度百科对于冒泡算法的定义: 冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一 ...
- c语言排序需要插空的最小次数,C语言数组排序——冒泡排序、选择排序、插入排序...
一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个--直到比较第n-1个和第n个,此时,每一次比较都 ...
- 算法与数据结构(冒泡排序,选择排序和插入排序的总结)
冒泡排序,选择排序和插入排序的总结 在规模较小时,或者元素的有序性较高时,插入排序的时间复杂度可以接近 O(n) ,是上述三种排序里表现最好的 一.通过表格我们可以发现,冒泡排序的时间复杂度是要优于选 ...
- JavaSE(二十四)——冒泡排序、选择排序、直接插入排序以及二分查找
文章目录 1. 冒泡排序 2. 选择排序 3. 直接插入排序 4. 二分查找 1. 冒泡排序 原理:数组元素两两比较,大的往后放,经过一轮比较后,最大元素在最后面,如此往复. 举例说明: 代码: // ...
- python算法与数据结构-选择排序算法(33)
阅读目录 一.选择排序的介绍 二.选择排序的原理 三.选择排序的图解 四.选择排序总结 五.选择排序的python代码实现 六.选择排序的C语言代码实现 七.选择排序的时间复杂度 八.选择排序的稳定性 ...
- 冒泡排序、选择排序和插入
冒泡排序.选择排序和插入排序代码如下: package cn.luxh.app.test;public class SimpleSortUtil {/*** 冒泡排序* 从小到大排序* 思路:* 1) ...
- C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)
参考:C语言五大排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)动态演示 作者:一只青木呀 发布时间: 2020-09-09 20:18:43 网址:https://blog.csdn.net/ ...
- 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...
掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...
最新文章
- 苹果汽车高管几乎流失殆尽,一年损失7人,新年又有人被Meta挖走
- 2013秋东北计算机在线作业,2013秋奥鹏东北师范大学计算机应用基础第三次在线作业及答案.doc...
- 1.16 静态内部类
- JavaScript的表单事件
- 怎么转化大小写_亚马逊search term被限制,Search Terms只能写一行怎么办?
- etmvc mysql乱码_Etmvc学习文档
- 使用C#+Edge (Chromium)进行Web自动化测试
- 点到点 Ipsec *** 从一端能正常发起,另一端发起不成功的解决过程
- mysql query cache_MySQL Query Cache开启与否的必要性分析
- 三极管开关为什么工作在饱和区和截至区
- 骑士人才系统(qscms)微信公众号配置教程
- C51单片机实现流水灯的三种编程方法
- 16位算术逻辑运算实验
- Total Variation
- 使用keras框架训练神经网络时显卡内存使用很大很大的解决方案
- ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)
- 解决了,佳能R6相机DAT/MP4视频文件修复卡顿无声问题
- 判断字符串是否是对称字符串
- 3*3 数字拼图(去除无解的随机组合)
- 新浪财经隆重推出四大千万级财经博客
热门文章
- NoSQL数据库:从故障中恢复数据的原理
- C++学习日记1:VS2015环境下,创建基于对话框的MFC工程
- ScrollView常用属性汇总
- javascrip对表格的操作(三)
- 使用nlite制作集成驱动windows安装光盘及实践心得
- MySQL集群架构-DRBD+headbeat +lvs+keepalived
- 私有云中Kubernetes Cluster HA方案
- C++两种单例(饿汉式,懒汉式)
- 认识一下Android 事件分发机制
- centos cmake安装mysql_CentOS下使用cmake编译安装mysql