冒泡排序和生成器

冒泡排序-第一种方法

def bubble_sort(num):
for i in range(len(num) - 1):
for j in range(len(num) - i - 1):
if num[j] > num[j + 1]:
num[j], num[j + 1] = num[j + 1], num[j]
return num


lis = [4, 2, 7, 33, 6]
print(bubble_sort(lis))


冒泡排序-第二种方法(优化)
如果冒泡排序中执行一趟而没有交换,则列表已经是有序状态,可以直接结束算法

import random


def bubble_sort(num):
for i in range(len(num) - 1):
exchange = False # 默认没有交换
for j in range(len(num) - i - 1): # 比较一趟
if num[j] > num[j + 1]:
num[j], num[j + 1] = num[j + 1], num[j]
exchange = True
if not exchange: # 不交换了,证明是有序队列
break


data = list(range(20))
random.shuffle(data)
bubble_sort(data)
print(data)

冒泡排序-java代码

 

生成器-(两种方法都可以执行生成器)
方法一:

def my_generator():
print('生成器被执行!')
yield 1 # 运行一次到这个位置,在执行从下面开始
yield 2


my = my_generator()
print(next(my)) # 生成器用next执行
print(next(my))
print(next(my)) # 抛出StopIteration异常

方法二:

for i in my_generator():  # 循环这个方法也是执行生成器的过程,不会报错
print(i)
posted @ 2018-01-04 17:22  laosun0204  阅读(182)  评论(0编辑  收藏  举报