冒泡排序:
1. 标准冒泡
2. 布尔优化冒泡
3. 完整Dome及其对比
4. 特例情况
标准冒泡:
def bubble_sort_1(li):
for i in range(len(li)-1):
for j in range(len(li) - i - 1):
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
return li
布尔优化冒泡
def bubble_sort_2(li):
for i in range(len(li)-1):
judge = False
for j in range(len(li) - i - 1):
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
judge = True
if not judge:
break
return li
完整Dome及其对比
# _*_ coding:utf-8 _*_
import random
import time
__author__ = "aou1758"
__date__ = "2018/4/11 5:03"
# 先定义一个计算Demo运行时间的装饰器
def GetRunTime(func):
def call_func(*args, **kwargs):
begin_time = time.time()
ret = func(*args, **kwargs)
end_time = time.time()
Run_time = end_time - begin_time
print(str(func.__name__)+"函数运行时间为"+str(Run_time))
return ret
return call_func
@GetRunTime
def maopao1(data):
for i in range(len(data)-1):
for j in range(len(data)-i-1):
if data[j] > data[j+1]:
data[j], data[j+1] = data[j+1], data[j]
return data
@GetRunTime
def maopao2(data):
for i in range(len(data)-1):
panduan = False
for j in range(len(data)-i-1):
if data[j] > data[j+1]:
data[j], data[j+1] = data[j+1], data[j]
panduan = True
if not panduan:
break
return data
data = list(range(1000))
random.shuffle(data)
print("洗牌之后的列表:" + str(data))
print("冒泡1"+str(maopao1(data)))
print("冒泡2"+str(maopao2(data)))
冒泡排序优化后分三种情况
极好:
已经排好序
一般:
随机序列
极坏:
倒序