python实现冒泡法排序的几种方式
(2017-03-10 15:33:11)
标签:
python |
分类: 算法 |
冒泡排序是非常容易理解和实现,,以从小到大排序举例:
设数组长度为N。
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。
2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
代码实现:
1. 第1种方法:
#!/usr/bin/python
if __name__ == "__main__":
6, 1, 4, 7, 9, 5, 2, 3, 10, 8] arr = [
for i in range(0,len(arr)-1):
for j in range(0,len(arr)-1):
if arr[j] > arr[j+1]:
1]=arr[j+1],arr[j] arr[j],arr[j+
print arr
--------------------------------------------
运行的结果为:E:\python2.7\python.exe E:/python2.7/test/sort/bublesort2.py
[1, 6, 4, 7, 9, 5, 2, 3, 10, 8]
[1, 4, 6, 7, 9, 5, 2, 3, 10, 8]
[1, 4, 6, 7, 9, 5, 2, 3, 10, 8]
[1, 4, 6, 7, 9, 5, 2, 3, 10, 8]
[1, 4, 6, 7, 5, 9, 2, 3, 10, 8]
[1, 4, 6, 7, 5, 2, 9, 3, 10, 8]
[1, 4, 6, 7, 5, 2, 3, 9, 10, 8]
[1, 4, 6, 7, 5, 2, 3, 9, 10, 8]
[1, 4, 6, 7, 5, 2, 3, 9, 8, 10]
[1, 4, 6, 7, 5, 2, 3, 9, 8, 10]
[1, 4, 6, 7, 5, 2, 3, 9, 8, 10]
[1, 4, 6, 7, 5, 2, 3, 9, 8, 10]
[1, 4, 6, 5, 7, 2, 3, 9, 8, 10]
[1, 4, 6, 5, 2, 7, 3, 9, 8, 10]
[1, 4, 6, 5, 2, 3, 7, 9, 8, 10]
[1, 4, 6, 5, 2, 3, 7, 9, 8, 10]
[1, 4, 6, 5, 2, 3, 7, 8, 9, 10]
[1, 4, 6, 5, 2, 3, 7, 8, 9, 10]
[1, 4, 6, 5, 2, 3, 7, 8, 9, 10]
[1, 4, 5, 6, 2, 3, 7, 8, 9, 10]
[1, 4, 5, 2, 6, 3, 7, 8, 9, 10]
[1, 4, 5, 2, 3, 6, 7, 8, 9, 10]
[1, 4, 5, 2, 3, 6, 7, 8, 9, 10]
[1, 4, 5, 2, 3, 6, 7, 8, 9, 10]
[1, 4, 5, 2, 3, 6, 7, 8, 9, 10]
[1, 4, 5, 2, 3, 6, 7, 8, 9, 10]
[1, 4, 2, 5, 3, 6, 7, 8, 9, 10]
[1, 4, 2, 3, 5, 6, 7, 8, 9, 10]
[1, 4, 2, 3, 5, 6, 7, 8, 9, 10]
[1, 4, 2, 3, 5, 6, 7, 8, 9, 10]
[1, 4, 2, 3, 5, 6, 7, 8, 9, 10]
[1, 2, 4, 3, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Process finished with exit code 0
或者
#!/usr/bin/python
if __name__ == "__main__":
6, 1, 4, 7, 9, 5, 2, 3, 10, 8] arr = [
for i in range(0,len(arr)-1):
for j in range(0,len(arr)-1-i):
if arr[j] > arr[j+1]:
1]=arr[j+1],arr[j] arr[j],arr[j+
print arr
2.第2种方法:
设置一个标志,如果这一趟发生了交换,则为true,否则为false。明显如果有一趟没有发生交换,说明排序已经完成。
#!/usr/bin/python
if __name__ == "__main__":
6, 1, 4, 7, 9, 5, 2, 3, 10, 8] arr = [
for i in range(0,len(arr)-1):
0 flag =
for j in range(0,len(arr)-1):
if arr[j] > arr[j+1]:
1]=arr[j+1],arr[j] arr[j],arr[j+
1 flag =
print arr
if flag == 0:
break
----------------------------------------------------
运行的结果为:E:\python2.7\python.exe E:/python2.7/test/sort/bubllesort3.py
[1, 6, 4, 7, 9, 5, 2, 3, 10, 8]
[1, 4, 6, 7, 9, 5, 2, 3, 10, 8]
[1, 4, 6, 7, 5, 9, 2, 3, 10, 8]
[1, 4, 6, 7, 5, 2, 9, 3, 10, 8]
[1, 4, 6, 7, 5, 2, 3, 9, 10, 8]
[1, 4, 6, 7, 5, 2, 3, 9, 8, 10]
[1, 4, 6, 5, 7, 2, 3, 9, 8, 10]
[1, 4, 6, 5, 2, 7, 3, 9, 8, 10]
[1, 4, 6, 5, 2, 3, 7, 9, 8, 10]
[1, 4, 6, 5, 2, 3, 7, 8, 9, 10]
[1, 4, 5, 6, 2, 3, 7, 8, 9, 10]
[1, 4, 5, 2, 6, 3, 7, 8, 9, 10]
[1, 4, 5, 2, 3, 6, 7, 8, 9, 10]
[1, 4, 2, 5, 3, 6, 7, 8, 9, 10]
[1, 4, 2, 3, 5, 6, 7, 8, 9, 10]
[1, 2, 4, 3, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Process finished with exit code 0
Xinyi(陈新依)

加载中…