1.冒泡排序
#冒泡排序 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 '''
2.快速排序
"""快速排序""" 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]
3.进度条打印
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('加载成功!')
4.打印 九九乘法表
for i in range(1,10): for j in range(1,i+1): # 内存循环的range条件是根据外层循环决定的 print('%s*%s=%s'%(i,j,i*j),end=' ') print()
5.打印 金字塔
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()
6.给定 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))