冒泡排序轻松又容易
2015-08-10 16:33
363 查看
冒泡排序顾名思义(以递增排序为例,使用Python语言),筛选出最大的元素“冒泡”到最后的位置上去。
整体思想:(对应于一个拥有n个数的列表)
执行n趟比较,每趟比较将会冒泡出当前次最大数字
每趟比较将会执行 n-(筛选出数字个数)次
具体步骤:
每一趟进行两两相邻的数比较,大的交换到后面,小的在前。
每一趟比较之后必然会产生当前的 list (每一次冒泡之后会剔除最后一个数)中的一个最大的数放到最后,一共有n个数字,那么必然会要筛选n次。
每次筛选出了一个最大的之后,最后一个数就会被排除(因为最后一个数是冒泡出来最大的数,所以剔除不用再次比较)
当然,如果后面发现整个 list 已经成为有序的 list 了之后,后面的元素就不用进行排序了。
整体思想:(对应于一个拥有n个数的列表)
执行n趟比较,每趟比较将会冒泡出当前次最大数字
每趟比较将会执行 n-(筛选出数字个数)次
具体步骤:
每一趟进行两两相邻的数比较,大的交换到后面,小的在前。
每一趟比较之后必然会产生当前的 list (每一次冒泡之后会剔除最后一个数)中的一个最大的数放到最后,一共有n个数字,那么必然会要筛选n次。
每次筛选出了一个最大的之后,最后一个数就会被排除(因为最后一个数是冒泡出来最大的数,所以剔除不用再次比较)
def bubble(lst): for i in range( len(lst) ): #for j in range( i, len(lst)-1 ): for j in range( len(lst) - i -1): if lst[ j ] > lst[ j+1 ]: temp = lst [j] lst[ j ] = lst[ j+1 ] lst [ j+1 ] = temp lst = [3, 4, 5, 9, 3, 6, 8, 9, 7] bubble(lst) print lst
当然,如果后面发现整个 list 已经成为有序的 list 了之后,后面的元素就不用进行排序了。
def bubble(lst): top = len(lst) - 1 is_exchange = True while is_exchange: is_exchange = False for i in range(top): if lst[i] > lst[i + 1]: is_exchange = True # swap happened means list is not ordered, loop continue temp = lst [i] lst[ i ] = lst[ i+1 ] lst [ i+1 ] = temp top -= 1 lst = [3, 4, 5, 9, 3, 6, 8, 9, 7] bubble(lst) print lst
相关文章推荐
- python 当派生类找不到属性、方法时会怎么办
- Maven工程产生Jar时Main-Class和Class-Path的配置文件
- Android RecyclerView 使用完全解析 体验艺术般的控件
- 测试工程师的严肃游戏
- Java的String类中常用方法举例
- C/C++_static函数与普通函数
- ZOJ 3886 Nico Number(线段树单点更新+找规律)
- iOS计算缓存大小、清除缓存
- 查找组成一个偶数最接近的两个素数
- Django中的request.GET和request.POST
- IOS开发判断是否第一次使用软件且下次app自动更新后再次打开还是第一次使用
- CDN服务上线,DNSPOD布局云端生态圈
- linux shell 字符串操作(长度,查找,替换)详解
- HDOJ-2002-计算球体积
- POJ3264Balanced Lineup【RMQ模板】
- R 正则表达式例子
- 水管工游戏
- windows下的host文件在哪里,有什么作用?
- mysqldump参数之-d -t -T
- TS通过UDP的方式传送给VLC(下面为服务端代码),客服端接收方式:udp://@:5678