python算法 – python实现冒泡排序
- 编程
- 2023-02-10
python算法 - python实现冒泡排序
冒泡排序的运算原理:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
实例代码
# -*- encoding: utf-8 -*-
def bubble_sort(seq, cmp=cmp):
"""冒泡排序,伪码如下:
BUBBLESORT(A)
1 for i ← 1 to length[A]
2 do for j ← length[A] downto i+1
3 do if A[j] < A[j-1]
4 then exchange A[j] ↔ A[j-1]
T(n) = θ(n^2)
Args:
seq (Sequence): 一个序列对象。
cmp (Function): 比较函数。默认为内建函数cmp()。
Returns:
一个排序后的列表。
"""
if (seq == None):
return None
length = len(seq)
for i in range(length):
for j in range(length-1, i, -1):
if seq[j] < seq[j-1]:
seq[j], seq[j-1] = seq[j-1], seq[j]
return seq
if __name__ == '__main__':
import random, timeit
items = range(10000)
random.shuffle(items)
def test_sorted():
print(items)
sorted_items = sorted(items)
print(sorted_items)
def test_bubble_sort():
print(items)
sorted_items = bubble_sort(items)
print(sorted_items)
test_methods = [test_sorted, test_bubble_sort]
for test in test_methods:
name = test.__name__ # test.func_name
t = timeit.Timer(name + '()', 'from __main__ import ' + name)
print(name + ' takes time : %f' % t.timeit(1))
- 初学者学习python2还是python3?
- python获取本机IP、mac地址、计算机名
- 详解python2 和 python3的区别
- python基础之删除文件及删除目录的方法
- 用python求第1000个质数的值
- python常用函数年初大总结
- Python3 - 时间处理与定时任务
- Python开发的CMS系统,Silva CMS 3 发布
- python基础之使用os.system来执行系统命令
- 判断python字典中key是否存在的两种方法
- 初学者学习python2还是python3?
- python基础之删除文件及删除目录的方法
- python获取本机IP、mac地址、计算机名
- python获取系统时间(时间函数详解)
- 详解python2 和 python3的区别
- 用python求第1000个质数的值
- Python3 - 时间处理与定时任务
- 命令行看糗百
- Python算法之---冒泡,选择,插入排序算法
- python 中求和函数 sum详解
- range方法在Python2和Python3中的不同
- python3 数组(列表)初始化
- 记一次crontab中date命令错用导致的问题
- MySQL用LIKE特殊字符搜索
- CentOS 7 下修改主机名
- Python3正则表达式之:(?(id/name)y...
- TIOBE编程语言排行榜2019年 Python稳居前三
- 解压命令unzip常用方法汇总
- 解析redis备份文件rdb的两种方法及对比
- 百度视觉语义化平台2.0:交互升级和...
- 5G时代的视觉语义化技术:软硬结合...
- 百度AutoDL重磅升级至3.0:设计、迁...