Python实现冒泡排序算法的完整实例
冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉。
实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边。然后再继续重复的比较,直至无数值需要交换,此时排序完成。
例子解释:
无序列表arr = [7,6,5,3,9,2,8,1,4]
数列长度:len = 9
第一趟排序:
i = 1;
arr = [7,6,5,3,9,2,8,1,4]
- 7>6 =>[6,7,5,3,9,2,8,1,4]数值小的放左边,数值打的放右边
- 7>5 =>[6,5,7,3,9,2,8,1,4]
- 7>3 =>[6,5,3,7,9,2,8,1,4]
- 7<9 =>[6,5,3,7,9,2,8,1,4]
- 9>2 =>[6,5,3,7,2,9,8,1,4]
- 9>8 =>[6,5,3,7,2,8,9,1,4]
- 9>1 =>[6,5,3,7,2,8,1,9,4]
- 9>4 =>[6,5,3,7,2,8,1,4,9]
第一趟进行了8次交换,即子循环比较的次数为j=len-i=9-1=8
至此第一趟冒泡已完成,最大数值9已经排到最右边。
第二趟排序:
i = 2
arr = [6,5,3,7,2,8,1,4,9]
- 6>5 => [5,6,3,7,2,8,1,4,9]
- 6>3 => [5,3,6,7,2,8,1,4,9]
- 6<7 =>[5,3,6,7,2,8,1,4,9]
- 7>2 =>[5,3,6,2,7,8,1,4,9]
- 7<8 =>[5,3,6,2,7,8,1,4,9]
- 8>1 =>[5,3,6,2,7,1,8,4,9]
- 8>4 =>[5,3,6,2,7,1,4,8,9]
第二趟进行了7次交换,即子循环比较的次数为j=len-i=9-2=7
至此第二趟冒泡已完成,arr = [5,3,6,2,7,1,4,8,9]。
。。。
接下来也是如此依次比较排序,直至数组arr = [1,2,3,4,5,6,7,8,9]
总共进行了8趟排序;
Python代码实现:
def bubbleSort(arr): # 获取数组长度 arr_len = len(arr) # 外部大循环=》第几趟 for i in range(1, arr_len): # 内部循环比较=》相邻数值进行比较 for j in range(0, arr_len - i):# 每次内循环的次数都需要总长度减去已排好位置的值的数量 if arr[j] > arr[j+1]: # 左右比较 arr[j], arr[j+1] = arr[j+1], arr[j] # 将数值大的放右边,数值小的放左边 arr = [64, 34, 25, 12, 22, 11, 90] bubbleSort(arr) print('排序后:') for i in range(len(arr)): print('%d'%arr[i], end=' ')
总结
到此这篇关于Python实现冒泡排序算法的文章就介绍到这了,更多相关Python实现冒泡排序算法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
本文实例讲述了Python实现的插入排序,冒泡排序,快速排序,选择排序算法.分享给大家供大家参考,具体如下: #!/usr/bin/python # coding:utf-8 #直接插入排序 def insert_sort(list): for i in range(len(list)): Key = list [i] #待插入元素 j = i - 1 while(Key < list[j] and j >= 0): list[j+1] = list[j] #后移元素 list[j] = Ke
-
Python编程二分法实现冒泡算法+快速排序代码示例
本文分享的实例主要是Python编程二分法实现冒泡算法+快速排序,具体如下. 冒泡算法: #-*- coding: UTF-8 -*- #冒泡排序 def func(lt): if type(lt).__name__ !='list' and type(lt).__name__ !='tuple': return if type(lt).__name__ == 'tuple': return list(lt) for i in range(1,len(lt)-1): for j in range
-
详解python算法之冒泡排序
python之冒泡排序 概念: 重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们交换过来.走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成 这个算法的名字由来是因为越大的元素会经由交换慢慢"浮"到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名"冒泡排序". 算法原理 冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他
-
python算法与数据结构之冒泡排序实例详解
一.冒泡排序介绍 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 二.冒泡排序原理 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对.这一步做完,最后的元素应该会是最大的数. 针对所有的
-
python冒泡排序算法的实现代码
1.算法描述:(1)共循环 n-1 次(2)每次循环中,如果 前面的数大于后面的数,就交换(3)设置一个标签,如果上次没有交换,就说明这个是已经好了的. 2.python冒泡排序代码 复制代码 代码如下: #!/usr/bin/python# -*- coding: utf-8 -*- def bubble(l): flag = True for i in range(len(l)-1, 0, -1): if flag: flag = False
-
Python排序搜索基本算法之冒泡排序实例分析
本文实例讲述了Python排序搜索基本算法之冒泡排序.分享给大家供大家参考,具体如下: 冒泡排序和选择排序类似,也是第n次把最小的元素排在第n的位置上,也是该元素的绝对位置,只是冒泡排序的过程中,其他的元素也逐渐向自己最终位置逼近.代码如下: def bubbleSort(seq): length=len(seq) for i in range(length): for j in range(length-1,i,-1): if seq[j-1]>seq[j]: seq[j-1],seq[j]=
-
利用python实现冒泡排序算法实例代码
冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大(升序),就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数.
-
python实现冒泡排序算法的两种方法
什么是冒泡排序? 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 这个算法的名字由来是因为越大的元素会经由交换慢慢"浮"到数列的顶端,故名冒泡排序. 以上是百度词条对冒泡排序的官方解释. 但是我要说一下我的个人理解,我觉得冒泡排序的核心思想是:每次比较两个数,如果他们顺序错误(大于或者小于),那么就把
-
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
我简单的绘制了一下排序算法的分类,蓝色字体的排序算法是我们用python3实现的,也是比较常用的排序算法. Python3常用排序算法 1.Python3冒泡排序--交换类排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来. 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 作为最简单的排序算法
-
Python实现冒泡排序算法的完整实例
冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后再继续重复的比较,直至无数值需要交换,此时排序完成. 例子解释: 无序列表arr = [7,6,5,3,9,2,8,1,4] 数列长度:len = 9 第一趟排序: i = 1; arr = [7,6,5,3,9,2,8,1,4] 7>6 =>[6,7,5,3,9,2,8,1,4]数值小的放左边,
-
python测试mysql写入性能完整实例
本文主要研究的是python测试mysql写入性能,分享了一则完整代码,具体介绍如下. 测试环境: (1) 阿里云服务器centos 6.5 (2) 2G内存 (3) 普通硬盘 (4) mysql 5.1.73 数据库存储引擎为 InnoDB (5) python 2.7 (6) 客户端模块 mysql.connector 测试方法: (1) 普通写入 (2) 批量写入 (3) 事务加批量写入 普通写入: def ordinary_insert(count): sql = "insert int
-
Python实现冒泡排序算法的示例解析
目录 1. 算法描述 2. 算法分析 3. 动图展示 4. 代码实现 5. 算法升级 6. 时间复杂度分析 1. 算法描述 冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 2. 算法分析 1. 比较相邻的元素.如果第一个比第二个大(升序),就交换他们两个. 2. 对每
-
Python有序查找算法之二分法实例分析
本文实例讲述了Python有序查找算法之二分法.分享给大家供大家参考,具体如下: 二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以2除以2... 例如需要查找有序数组arr里面的某个关键字key的位置,那么首先确认arr的中位数或者中点center,下面分为三种情况: ① 假如arr[center]>key,说明key在arr中心左边范围: ② 假如arr[center]<key,说明key在arr中心右边范围: ③ 假如arr[center]=key,说明key
-
Python基于DES算法加密解密实例
本文实例讲述了Python基于DES算法加密解密实现方法.分享给大家供大家参考.具体实现方法如下: #coding=utf-8 from functools import partial import base64 class DES(object): """ DES加密算法 interface: input_key(s, base=10), encode(s), decode(s) """ __ip = [ 58,50,42,34,26,18,
-
Python开发的实用计算器完整实例
本文实例讲述了Python开发的实用计算器.分享给大家供大家参考,具体如下: 实现功能:图形界面PyQt,输入框,+,-,*,/ :乘方 ,开方 ,取余,清零. 1. Python代码: #!/usr/bin/env python # -*- coding: utf-8 -*- ''' Author : Mr.LiuYC Created on 2014-09-30 E-Mail : liuyanchen0725@gmail.com Introduction: 简易计算器 实现图形界面PyQt,输
-
python实现AHP算法的方法实例(层次分析法)
一.层次分析法原理 层次分析法(Analytic Hierarchy Process,AHP)由美国运筹学家托马斯·塞蒂(T. L. Saaty)于20世纪70年代中期提出,用于确定评价模型中各评价因子/准则的权重,进一步选择最优方案.该方法仍具有较强的主观性,判断/比较矩阵的构造在一定程度上是拍脑门决定的,一致性检验只是检验拍脑门有没有自相矛盾得太离谱. 相关的理论参考可见:wiki百科 二.代码实现 需要借助Python的numpy矩阵运算包,代码最后用了一个b1矩阵进行了调试,相关代码如下
-
Swift代码实现冒泡排序算法的简单实例
冒泡排序原理 1.对需要排序的数据,俩俩进行比较,小的放前面,大的放后面 2.依次对每一对相邻的数据作步骤1的工作,当排序到最后一个元素的时候,我们能保证这个数据是最大. 3.针对所有的元素重复以上的步骤,除了最后一个(这里为什么需要针对除了最后一个元素的全部元素做一次呢,因为最后一个元素已经是最大的不需要排序了,同时,由于元素的交换,交换上来的元素的大小不一定比前面的元素的大,所以需要再做一次). 4持续对越来越少的元素重复3的步骤,直到没有任何一对元素需要比较. 时间复杂度 我们一般谈最坏时
随机推荐
- angular双向绑定模拟探索
- 基于jquery的一个OutlookBar类,动态创建导航条
- Chrome调试折腾记之JS断点调试技巧
- ASP.NET获取不到JS设置cookies的解决方法
- 使用php-timeit估计php函数的执行时间
- 深入理解Python中的内置常量
- 老生常谈python函数参数的区别(必看篇)
- python类和继承用法实例
- Python fileinput模块使用介绍
- C#多线程及同步示例简析
- Android Handler之消息循环的深入解析
- JavaScript初级教程(第四课)第1/2页
- Docker创建一个mysql容器并保存为本地镜像
- 深入extjs与php参数交互的详解
- ajax(iframe)无刷新提交表单、上传文件
- 用jquery实现自定义风格的滑动条实现代码
- MySQL插入中文不乱码的5种方法
- C 语言程序结构示例解析
- URL编码转换,escape() encodeURI() encodeURIComponent()
- Android客户端post请求服务器端实例