冒泡排序和生成器
冒泡排序-第一种方法
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)