python复习冒泡排序

冒泡排序:

思路:

先找到最大值放到最右边:

#encoding=utf-8

a=[1,9,2,8,3,6,4]

print "a before change:",a

for i in range(len(a)-1):

if a[i] > a[i+1]:

a[i],a[i+1] = a[i+1],a[i]

print "a after change:",a

结果:

D:\>python test.py

a before change: [1, 9, 2, 8, 3, 6, 4]

a after change: [1, 2, 8, 3, 6, 4, 9]

找到最大值了,第二步找到次大值放到倒数第二个位置

#encoding=utf-8

a= [1, 2, 8, 3, 6, 4, 9]

for i in range(len(a)-1-1):

if a[i] > a[i+1]:

a[i],a[i+1] = a[i+1],a[i]

print "a after change:",a

结果:

D:\>python test.py

a before change: [1, 2, 8, 3, 6, 4, 9]

a after change: [1, 2, 3, 6, 4, 8, 9]

找到倒数第二大的值了

第三步找到倒数第三大的数放到倒数第三个位置

a=[1, 2, 3, 6, 4, 8, 9]

print "a before change:",a

for i in range(len(a)-1-1-1):

if a[i] > a[i+1]:

a[i],a[i+1] = a[i+1],a[i]

print "a after change:",a

结果:

D:\>python test.py

a before change: [1, 2, 3, 6, 4, 8, 9]

a after change: [1, 2, 3, 4, 6, 8, 9]

依次类推,最后可以把整个列表排好序

从整体的过程来看,每次循环做的事情基本一样,从左到右依次用当前位置的数和

后边的数做比较,如果前边的数大,就把两个数换位置,循环结束后可以得到所循环的树中最大的数

每一次循环不一样的是循环所遍历数据长度都比上一次少一个,一共需要循环的次数是列表a的长度,那么把这六次循环写到一起就可以变成两层循环

外边的循环控制循环的次数即6次,i的变化值是0,1,2,3,4,5,即range(len(a)-1)

里边的循环控制每次循环的长度,每次长度减少1,j变化值是6次,5次,4次,3次,2次,1次,即每次为range(len(a)-i-1)次

循环每次做的事情不动改变

即:

#encoding=utf-8

a=[1,9,2,8,3,6,4]

print "a before change:",a

for i in range(len(a)-1):

for j in range(len(a)-i-1):

if a[j] > a[j+1]:

a[j],a[j+1] = a[j+1],a[j]

print "a after change:",a

结果:

D:\>python test.py

a before change: [1, 9, 2, 8, 3, 6, 4]

a after change: [1, 2, 3, 4, 6, 8, 9]

原文地址:https://www.cnblogs.com/xiaxiaoxu/p/10193279.html

时间: 2024-10-13 15:11:35

python复习冒泡排序的相关文章

python与冒泡排序

上一篇文章,介绍了一个非常快的排序算法--桶排序,但是它的缺点就是太耗资源了,这次要实现的算法就不用太耗资源了,它就是冒泡排序. 问题提出: 将以下数据升序排列:9, 2, 8, 6, 4 冒泡排序原理: 冒泡排序就是遍历数据,每次只与下一个数字比较,如果这两个数顺序不对,则与交换过来. 就上面那个问题来说,因为要升序排列,所以数字越大越排在后面.则两个数比较的时候,如果后一个数比当前数小,则顺序不对,要将这两个数交换.遍历的过程如下图: 第一次比较第一和第二个数字,9与2相比较,9比2大,顺序

Python 复习(二)

2019-02-18 16:12:57 时隔半个多月,又将Python复习提上了议程.... 迭代器与生成器   之前的学习过程中没有理解清楚迭代器的含义及原理,特别是 yield 的用法.今天算是弄明白了. 迭代器就是生成迭代序列.用 __iter__()类初始化,__next__()类遍历. Ls = [1,2,3] it = iter(Ls) while True: try: print(next(it)) except StopIteration: sys.exit() 用了yield的

Python版冒泡排序算法

0 为什么写本文 一方面对经典排序算法冒泡排序进行复习,另一方面通过实际应用来检验python基础知识的掌握情况,包括range函数.len函数.for循环.if语句.函数定义与调用.列表的排序等知识点.在实践中加深理解,达到学以致用.用以促学.学用相长的目的. 1 什么是冒泡排序 冒泡排序的基本思想是,将需要排序的元素看作是一个个"气泡",最小的"气泡"最快浮出水面,排在前面.较小的"气泡"排在第二个位置,依次类推.冒泡排序需要对数列循环若干次

python的冒泡排序

1.python中跟其他编程语言一样,也有冒泡排序 所谓冒泡排序,就是把同一个列表中的数字,按照大小进行排序,相邻的两个值进行比较,把较大的值往后排,直到一个列表中的元素的顺序从左到右按照从小到大的顺序排列 下面用代码演示一遍 1 a = [87, 33, 99, 12, 56, 39, 66, 22] 2 3 for i in range(1,len(a)): #外层循环的长度按照a的长度为(1,8) 4 5 for j in range(len(a)-i): 6 #内层循环表示每次把相邻的数

Python复习——复习4次课(12月1日)

任务: 复习4次课(12月1日)1.1 函数定义1.2 函数的参数1.3 函数的默认参数1.4 函数的变量1.5 函数的返回值1.6 多类型传值和冗余参数1.7 函数的递归调用 笔记: 函数定义 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这通常叫函数调用).预定义函数 可以直接使用自定义函数 用户自己编写 为什么使用函数降低编程难度 - 通常将一个复杂的大问题分解成一系列的小问题,然后将小问题划分成更小的问题,当问

Python复习——复习6次课(12月3日)

复习6次课(12月3日)2.5/2.6 模块使用2.7 面向对象介绍2.8 类的属性2.9 类的方法3.0 类的内置方法3.1/3.2 类的继承 笔记: 模块: 模块是Python组织代码的基本方式.一个Python脚本可以单独运行,也可以导入到另一个脚本中运行,当脚本被导入运行时,我们将其称为模块(module).所有的.py文件都可以作为一个模块导入模块名与脚本的文件名相同例如我们编写了一个名为hello.py的脚本,则可以在另一个脚本中用import hello语句来导入它. 包:Pyth

用python实现冒泡排序

冒泡排序 基本思想 冒泡法也称沉底法,没相邻两个记录关键字比较大小,大的记录往下沉(也可以小的网上浮).每一遍把最后一个下沉的位置记下,下一遍只需检查比较到此位置:到所有记录都不发生变化时,整个过程结束(每交换一次,记录减少一个反序数). 举例 有一组数据( 83, 16, 9, 96, 27, 75, 42, 69,34 ),在开始时83与16互相比较,因为83>16,所以两个元素互换,然后比较83>9,83与9互换,接着比较83<96,所以不变,然后互换的元素有(96,27),(96

python实现冒泡排序的几种方法

什么是冒泡排序? 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 这个算法的名字由来是因为越大的元素会经由交换慢慢"浮"到数列的顶端,故名冒泡排序. 以上是百度词条对冒泡排序的官方解释. 但是我要说一下我的个人理解,我觉得冒泡排序的核心思想是:每次比较两个数,如果他们顺序错误(大于或者小于),那么就把

利用Python进行冒泡排序

# -*- coding:utf-8 -*- ## 冒泡排序解析 """ 冒泡排序的必备知识: 互换位置 用temp临时变量 a1 = 456 a2 = 123 temp = a1 a1 = a2 a2 = temp print(a1) print(a2) Python中可以不使用中间变量temp.直接可以进行互换位置. a1 = 456 a2 = 123 if a1 > a2: # 如果a1 比 a2 大,那么 交换位置 (a1, a2) = (a2, a1) # 运