#冒泡排序
import time
nums=[40,23,14,35,3,5,12,44,65,21]
def bubble_sort(nums):
for i in range(len(nums)-1):
for j in range(len(nums)-i-1):
if nums[j]>nums[j+1]:
nums[j],nums[j+1]=nums[j+1],nums[j]
return nums
start=time.time()
res=bubble_sort([40,23,14,35,3,5,12,44,65,21])
time.sleep(1)
t=time.time()-start
print(res,t) #1.0000569820404053
'''
打印结果
[3, 5, 12, 14, 21, 23, 35, 40, 44, 65] 1.0000569820404053
'''
# 基于冒泡排序求取求最大值(不使用列表的内置方法sort)
def max_value(nums):
count=0
for i in range(len(nums)-1):
for j in range(len(nums)-i-1):
if nums[i]>nums[i+1]:
nums[i],nums[i+1]=nums[i+1],nums[i]
return nums[len(nums)-1]
res=max_value([40,23,14,35,3,5,12,44,65,21])
print(res)
'''
打印结果
65
'''
#简单版本求最大值(不使用列表中sort方法)
l=[40,23,14,355,3,5,12,44,65,21]
for i in range(len(l)-1):
if l[i]>l[i+1]:
l[i],l[i+1]=l[i+1],l[i]
print(l[len(l)-1])
'''
打印结果
355
'''
"""快速排序"""
def quick_sort(data):
if len(data) >= 2: # 递归入口及出口
mid = data[len(data) // 2] # 选取基准值,也可以选取第一个或最后一个元素
left, right = [], [] # 定义基准值左右两侧的列表
data.remove(mid) # 从原始数组中移除基准值
for num in data:
if num >= mid:
right.append(num)
else:
left.append(num)
return quick_sort(left) + [mid] + quick_sort(right)
else:
return data
# 示例:
array = [2, 41, 5, 7, 1, 120, 6, 15, 5, 2, 7, 9, 10, 15, 9, 5, 12]
print(quick_sort(array))
# 输出为[1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 9, 9, 10, 12, 15, 15, 17]
# 方法一:
import time
start = time.time()
count = 100
for i in range(count+1):
print(f'\r[{i*">"}:{(count-i)*"-"}]已加载:{i}% ','共用时:',time.time()-start,'s',end='')
time.sleep(0.1)
print()
print('加载成功!')
# 方法二:
import time
scale=50
print('执行开始'.center(scale//2,'-'))
start=time.perf_counter()
for i in range(scale+1):
a='*'*i
b='.'*(scale-i)
c=(i/scale)*100
dur=time.perf_counter()-start
print('\r{:3.0f}%[{}->{}]{:.2f}s'.format(c,a,b,dur),end='')
time.sleep(0.1)
print('\n'+'执行结束'.center(scale//2,'-'))
# 方法一:
for i in range(1,10):
for j in range(1,i+1): # 内存循环的range条件是根据外层循环决定的
print('%s*%s=%s'%(i,j,i*j),end=' ')
print()
# 方法二: 一行代码实现99乘法表
print('\n'.join([' '.join(['%s*%s=%s'%(y,x,y*x)for y in range(1,x+1)])for x in range(1,10)]))
max_level = 10
for current_level in range(1,max_level+1):
# 打印空格
for i in range(max_level-current_level):
print(' ',end='')
# 打印信号
for j in range(2*current_level-1):
print('*',end='')
print()
? 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
)
上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)
l=[0,2,0,0,4,5,2,0,4,3,2,1,4,5,5]
def trap( height):
if len(height) <= 1:
return 0
max_height = 0
max_height_index = 0
# 找到最高点
for i in range(len(height)):
h = height[i]
if h > max_height:
max_height = h
max_height_index = i
area = 0
# 从左边往最高点遍历
tmp = height[0]
for i in range(max_height_index):
if height[i] > tmp:
tmp = height[i]
else:
area = area + (tmp - height[i])
# 从右边往最高点遍历
tmp = height[-1]
for i in reversed(range(max_height_index + 1, len(height))):
if height[i] > tmp:
tmp = height[i]
else:
area = area + (tmp - height[i])
return area
print(trap(l))
from functools import reduce
print(reduce(lambda x,y:x+y,[i for i in range(1,101)]))
# res=(i for i in range(1,101))
# print(res) # <generator object <genexpr> at 0x0000000009F6B888> 生成器
原文:https://www.cnblogs.com/zhangchaocoming/p/11637537.html