算法 python实现(二) 冒泡排序
2013-08-27 22:44
225 查看
首先说一下 冒泡排序 是怎么做的:
总体的想法是,把小的轻的浮上前面去,把大的重的沉到后面去。
这样设置两个指针,i j,
1. i标识每一趟循环。这一趟的目的是把后面那些未排序的数列中最小的浮上前面去。
2. j标识的就是一趟中,具体是怎么找到最小最轻的数的过程。j从末尾开始,逐个与自己前一个数比较大小,如果后面的数小于前面的数,就交换位置,让小的往前窜一个,否则就不动。然后j--,指向前一个,再比较相邻的数大小,直到 j 循环到i的位置,因为i之前的都是排序好的,不用在排了。
3. 一趟下来,整个数列中最小最轻的就浮到前面去了,然后i++,把i指向第二个位置,也就是要在剩下的数列中找到第二轻的数然后放着i这里。如此循环下去,直到i到了倒数第二个数,因为剩最后一个数就不用排。
上代码,几乎每行都有注释:
运行一下 come on baby:
输入:234 24 54 -234 0 -23 -2 345 4.5 656.4 56.345
输出:[-234.0, -23.0, -2.0, 0.0, 4.5, 34.0, 54.0, 56.345, 234.0, 345.0, 656.4]
总体的想法是,把小的轻的浮上前面去,把大的重的沉到后面去。
这样设置两个指针,i j,
1. i标识每一趟循环。这一趟的目的是把后面那些未排序的数列中最小的浮上前面去。
2. j标识的就是一趟中,具体是怎么找到最小最轻的数的过程。j从末尾开始,逐个与自己前一个数比较大小,如果后面的数小于前面的数,就交换位置,让小的往前窜一个,否则就不动。然后j--,指向前一个,再比较相邻的数大小,直到 j 循环到i的位置,因为i之前的都是排序好的,不用在排了。
3. 一趟下来,整个数列中最小最轻的就浮到前面去了,然后i++,把i指向第二个位置,也就是要在剩下的数列中找到第二轻的数然后放着i这里。如此循环下去,直到i到了倒数第二个数,因为剩最后一个数就不用排。
上代码,几乎每行都有注释:
#encoding:utf-8 """ 首先要知道 l.sort() 的list内建函数可以直接实现排序的目的 或者 sorted() 内建函数 区别在于前者原地更改list 后者返回新的副本 """ #由于命令行参数是按照字符串的形式接收的,所以split一下转换为list l = raw_input("输入数字们,空格分割:").split(' ') lenth = len(l) #在list中的每个元素有都是字符串,所有又每个都转成float for i in range(lenth): l[i] = float(l[i]) #i j 都是下标,i之前都是排序好的,j之后都是未排序的 #range()给lenth-1的话,i就不用指向l的最后一个元素,因为剩最后一个了就完事了,不用排了,j也是一样。 for i in range(lenth-1): #j给的是 从i到末尾,不含i,这样就是只排序i后面那些没排序的,循环到i就不用在往前了,因为前面都是排好的 #末尾-1是倒序生成,因为i从前向后循环,j从后先前循环,所以是返的 for j in range(lenth-1, i, -1): #冒泡是把小的浮上前面去 if l[j] < l[j-1]: l[j], l[j-1] = l[j-1], l[j] print l
运行一下 come on baby:
输入:234 24 54 -234 0 -23 -2 345 4.5 656.4 56.345
输出:[-234.0, -23.0, -2.0, 0.0, 4.5, 34.0, 54.0, 56.345, 234.0, 345.0, 656.4]
相关文章推荐
- 常用算法之:冒泡排序(bubble)的python实现
- 用python实现算法之——冒泡排序
- Python实现排序算法之冒泡排序
- python实现基础排序算法之(冒泡排序)
- 数据挖掘 --- Python实现KNN算法项目 - 水果分类
- 【算法——Python实现】有负权图求单源最短路径BellmanFord算法
- 机器学习经典算法详解及Python实现---朴素贝叶斯分类及其在文本分类、垃圾邮件检测中的应用
- 遗传算法解TSP问题 python实现
- python实现冒泡排序的简单示例
- python实现knn算法
- Python实现各类数据结构和算法---动态规划之最长公共子序列
- 利用Python实现冒泡排序
- Python实现一些简单的算法(4)—将一个字符串转成驼峰数
- 使用python实现细菌繁殖的算法代码,欢迎拍砖讨论!
- 高斯判别分析算法及其python实现
- 机器学习与数据挖掘-K最近邻(KNN)算法的实现(java和python版)
- 选择排序、插入排序、冒泡排序python实现
- 经典算法的Python实现(3)
- [置顶] 《统计学习方法》 决策树 CART生成算法 分类树 Python实现
- python机器学习---用贝叶斯算法实现垃圾邮件分类预测