python16_day39【算法】
2024-08-24 18:19:25
复习:
1.递归
- 调用自身
- 结束条件
一、冒泡算法
def bubble_sort(numbs):
for i in range(len(numbs)-1): # 这个循环负责设置冒泡排序进行的次数。
for j in range(len(numbs)-i-1): # j为列表索引, -1为了报错IndexError: list index out of range
if numbs[j] > numbs[j+1]:
numbs[j], numbs[j+1] = numbs[j+1], numbs[j]
return numbs
nums = [5,2,45,6,8,2,1] print(bubble_sort(nums))
bubble_sort
二、冒泡优化版
def bubble_sort(numbs):
for i in range(len(numbs)-): # 这个循环负责设置冒泡排序进行的次数。
exchange = False
for j in range(len(numbs)-i-): # j为列表索引, -1为了报错IndexError: list index out of range
if numbs[j] > numbs[j+]:
numbs[j], numbs[j+] = numbs[j+], numbs[j]
exchange = True
if not exchange:
break
return numbs
nums = [,,,,,,] print(bubble_sort(nums)) bubble_sort
三、快排
import random
import time def quick_sort_(data, left, right):
if left < right:
mid = partition(data, left, right)
quick_sort_(data, left, mid - 1)
quick_sort_(data, mid + 1, right) def partition(data, left, right):
tmp = data[left] # 拿到最左边的数
while left < right: # 左右不碰的时候一直走。
while left < right and data[right] >= tmp: # 从右边找
right -= 1 # 如果右边的大,右边向左移
data[left] = data[right] # 如果右边的小,移到左边去。
while left < right and data[left] <= tmp: # 从左边找
left += 1
data[right] = data[left]
data[left] = tmp # 左右碰上了,就把TMP放回来
return left # 返回mid def quick_sort(data):
return quick_sort_(data, 0, len(data)-1) data = list(range(10000))
random.shuffle(data)
quick_sort(data)
quick_sort
最新文章
- IOS中的Block与C++11中的lambda
- 设置UIButton或者UILabel显示文字的行数
- cocosstdio之字体之文本和FNT字体
- 人人网的账号登录及api操作
- Spring Boot中使用Swagger2构建强大的RESTful API文档
- 广度优先搜索 codevs 2806 红与黑
- C和指针笔记 3.6链接属性
- UVA 10499 (13.08.06)
- Window7 下开发php扩展
- MSSQL 标准PROC 写法
- http soap关系
- hibernate异常:org.hibernate.exception.GenericJDBCException
- 第11天:JS中变量、字符串基础知识
- mysql5.7中解决中文乱码的问题
- PHP 安装
- 下载 mysql 数据库 的步骤 完整版
- 移动端遮罩及阻止页面滑动,实用!!! 我们经常做一个fixed定位的遮罩和一个提示弹框,这时就要用到。记录--
- 数据结构与算法JS实现
- java获取本机ip(排除虚拟机等一些ip)最终解,总算找到方法了
- Python包的相对导入时出现问题解决