python算法初步(一)
python算法初步(一)
冒泡排序
时间效率O(n²)
原理:依次比较相邻两个位置的元素大小,然后按照要求交换位置。
#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。
def select_sort(data):
for i in range(len(data)-1):#需要选择的次数
min = i
for j in range(i+1,len(data)):#用于找到最小值所在的位置
if data[min] > data[j]:
min = j
data[min],data[i] = data[i],data[min]#找到最小值所在的位置后,进行交换位置。
return data import random
data_list=[i*i for i in range(10)]
random.shuffle(data_list)
print("使用索引交换位置,从小到大排序",select_sort(data_list)) print('*'*40) #选择排序
#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。
def select_sort(data):
for i in range(len(data)-1):#需要选择的次数
min = data[i]
for j in range(i+1,len(data)):#用于找到最小值所在的位置
if min > data[j]:
min = data[j]
data[data.index(min)],data[i] = data[i],data[data.index(min)]#找到最小值所在的位置后,进行交换位置。
return data import random
data_list = list(range(30))
#用于生成列表
random.shuffle(data_list)
#用于打乱列表
data_list
print("使用数据交换位置,从小到大排序",select_sort(data_list)) print('='*40) #选择排序
#从中依次选择出一个数据(进行比较),然后和其他数据进行比较,然后更换索引,或者直接交换数据本身 def select_sort(data):
for i in range(len(data)-1):
max = i
for j in range(i+1,len(data)):
if data[max] < data[j]:
max = j
data[i],data[max] = data[max],data[i]
return data import random
data_list = [i**3 for i in range(23)]
random.shuffle(data_list)
print("使用索引交换位置,从小到大排序",select_sort(data_list)) print('*'*40) #选择排序
#来来交换数据的本身,从大到小排序 def select_sort(data):
for i in range(len(data)-1):
max = data[i]
for j in range(i+1,len(data)):
if max < data[j]:
max = data[j]
data[data.index(max)],data[i] = data[i],data[data.index(max)]
return data import random
data_list = [i**4 for i in range(20)]
random.shuffle(data_list)
print("使用数据交换位置,从小到大排序",select_sort(data_list))
#结果
'''
使用索引交换位置,从小到大排序 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
****************************************
使用数据交换位置,从小到大排序 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
========================================
使用索引交换位置,从小到大排序 [10648, 9261, 8000, 6859, 5832, 4913, 4096, 3375, 2744, 2197, 1728, 1331, 1000, 729, 512, 343, 216, 125, 64, 27, 8, 1, 0]
****************************************
使用数据交换位置,从小到大排序 [130321, 104976, 83521, 65536, 50625, 38416, 28561, 20736, 14641, 10000, 6561, 4096, 2401, 1296, 625, 256, 81, 16, 1, 0]
'''
选择排序
时间效率O(n²)
原理:依次选出一个数据(作为初始数据),然后依次与其他数据进行比较,找出最小(最大)的数据,然后和初始数据交换位置。
#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。
def select_sort(data):
for i in range(len(data)-1):#需要选择的次数
min = i
for j in range(i+1,len(data)):#用于找到最小值所在的位置
if data[min] > data[j]:
min = j
data[min],data[i] = data[i],data[min]#找到最小值所在的位置后,进行交换位置。
return data import random
data_list=[i*i for i in range(10)]
random.shuffle(data_list)
print("使用索引交换位置,从小到大排序",select_sort(data_list)) print('*'*40) #选择排序
#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。
def select_sort(data):
for i in range(len(data)-1):#需要选择的次数
min = data[i]
for j in range(i+1,len(data)):#用于找到最小值所在的位置
if min > data[j]:
min = data[j]
data[data.index(min)],data[i] = data[i],data[data.index(min)]#找到最小值所在的位置后,进行交换位置。
return data import random
data_list = list(range(30))
#用于生成列表
random.shuffle(data_list)
#用于打乱列表
data_list
print("使用数据交换位置,从小到大排序",select_sort(data_list)) print('='*40) #选择排序
#从中依次选择出一个数据(进行比较),然后和其他数据进行比较,然后更换索引,或者直接交换数据本身 def select_sort(data):
for i in range(len(data)-1):
max = i
for j in range(i+1,len(data)):
if data[max] < data[j]:
max = j
data[i],data[max] = data[max],data[i]
return data import random
data_list = [i**3 for i in range(23)]
random.shuffle(data_list)
print("使用索引交换位置,从小到大排序",select_sort(data_list)) print('*'*40) #选择排序
#来来交换数据的本身,从大到小排序 def select_sort(data):
for i in range(len(data)-1):
max = data[i]
for j in range(i+1,len(data)):
if max < data[j]:
max = data[j]
data[data.index(max)],data[i] = data[i],data[data.index(max)]
return data import random
data_list = [i**4 for i in range(20)]
random.shuffle(data_list)
print("使用数据交换位置,从小到大排序",select_sort(data_list))
#结果
'''
使用索引交换位置,从小到大排序 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
****************************************
使用数据交换位置,从小到大排序 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
========================================
使用索引交换位置,从小到大排序 [10648, 9261, 8000, 6859, 5832, 4913, 4096, 3375, 2744, 2197, 1728, 1331, 1000, 729, 512, 343, 216, 125, 64, 27, 8, 1, 0]
****************************************
使用数据交换位置,从小到大排序 [130321, 104976, 83521, 65536, 50625, 38416, 28561, 20736, 14641, 10000, 6561, 4096, 2401, 1296, 625, 256, 81, 16, 1, 0]
'''
python算法初步(一)的更多相关文章
- 安装Python算法库
安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...
- python算法(一)
python算法(一) 一.求数x的因子 x=100 divisors=()#初始化空的元组 for i in range(1,x): if x%i==0: divisors=divisors+(i, ...
- Python算法与数据结构--求所有子数组的和的最大值
Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...
- Python算法:推导、递归和规约
Python算法:推导.递归和规约 注:本节中我给定下面三个重要词汇的中文翻译分别是:Induction(推导).Recursion(递归)和Reduction(规约) 本节主要介绍算法设计的三个核心 ...
- Python算法(含源代码下载)
关键字:Python Algorithms Python算法 Mastering Basic Algorithms in the Python Language 使用Python语言掌握基本算法 P ...
- python算法题 python123网站单元四题目
目录 一:二分法求平方根 二:Collatz猜想 三:算24(只考虑满足,不考虑把所有情况找出来) 下面向大家介绍几个python算法题. 一:二分法求平方根 1.题目要求为 2.输入输出格式为 ...
- python算法介绍:希尔排序
python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...
- Scratch编程与高中数学算法初步
scratch编程与高中数学算法初步 一提到编程,大家可能觉得晦涩难懂,没有一定的英语和数学思维基础的人,一大串的编程代码让人望而步,何况是中小学生. Scratch是一款由麻省理工学院(MIT) ...
- 【原创】tarjan算法初步(强连通子图缩点)
[原创]tarjan算法初步(强连通子图缩点) tarjan算法的思路不是一般的绕!!(不过既然是求强连通子图这样的回路也就可以稍微原谅了..) 但是研究tarjan之前总得知道强连通分量是什么吧.. ...
- Java && Python 算法面试常用类以及方法总结
数据结构 逻辑结构上: 包括集合,线性结构,非线性结构. 存储结构: 顺序存储,链式存储,索引存储,散列存储. Java 常见数据结构 大专栏 Java && Python 算法面试 ...
随机推荐
- spring boot http status 400
SpringBootAdmin不是Spring官方提供的模块,它包含了Client和Server两部分.server部分提供了用户管理界面,client即为被监控的服务.client需要注册到serv ...
- 官方使用logstash同步Mysql数据表到ES的摘抄
官方文档地址:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#plugins-inputs-jdbc ...
- ERP 系统的核心是什么?有什么作用?
ERP系统的核心就是系统的内部业务逻辑,这也是ERP复杂.专业性的体现!ERP系统需要适配企业的管理思想和业务流程,在技术上面也也要做到快速部署和个性化定制(客户化定制),而这些企业的规模不同.行业不 ...
- 无需Steam的Proton,在你的Linux运行任意Windows游戏!
链接: https://pan.baidu.com/s/1QeJxj9_2aZPk2_uZMzpn9A 提取码: v6t6 包含的版本 Proton4.11 Proton4.2 Proton5.0 ...
- 关于aws的ec2实例导出成ova后在vmware中的网络配置不生效的问题
在aws上的ec2实例,尤其是使用了aws市场中的ami创建的linux系统,默认情况下,网络配置都是通过dhcp自动获取的, 这周笔者将一台ec2实例(redhat/linux 8.3)导出/转换成 ...
- 关于aws cli命令的exit/return code分析
最近总是收到一个备份脚本的失败邮件,脚本是之前同事写的,没有加入任何有调试信息,及有用的日志 于是去分析 ,脚本中有一条 aws s3 sync $srclocal $dsts3 命令,然后根据这条 ...
- 一文读懂 MySQL 索引
1 索引简介 1.1 什么是 MySQL 的索引 官方定义:索引是帮助 MySQL 高效获取数据的数据结构 从上面定义中我们可以分析出索引本质是一个数据结构,他的作用是帮助我们高效获取数据,在正式介绍 ...
- 最长公共前缀(Java)
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:strs = ["flower","flo ...
- Oracle 同义词详解(synonym)
Oracle 同义词详解(synonym) 一.Oracle同义词概念 Oracle 数据库中提供了同义词管理的功能.同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性.在使 ...
- Collection接口中的方法的使用
add(Object e):将元素e添加到集合coll中size():获取添加的元素的个数addAll(Collection coll1):将coll1集合中的元素添加到当前的集合中clear():清 ...