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算法初步(一)的更多相关文章

  1. 安装Python算法库

    安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...

  2. python算法(一)

    python算法(一) 一.求数x的因子 x=100 divisors=()#初始化空的元组 for i in range(1,x): if x%i==0: divisors=divisors+(i, ...

  3. Python算法与数据结构--求所有子数组的和的最大值

    Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...

  4. Python算法:推导、递归和规约

    Python算法:推导.递归和规约 注:本节中我给定下面三个重要词汇的中文翻译分别是:Induction(推导).Recursion(递归)和Reduction(规约) 本节主要介绍算法设计的三个核心 ...

  5. Python算法(含源代码下载)

    关键字:Python Algorithms Python算法  Mastering Basic Algorithms in the Python Language 使用Python语言掌握基本算法 P ...

  6. python算法题 python123网站单元四题目

    目录 一:二分法求平方根 二:Collatz猜想 三:算24(只考虑满足,不考虑把所有情况找出来)   下面向大家介绍几个python算法题. 一:二分法求平方根 1.题目要求为 2.输入输出格式为 ...

  7. python算法介绍:希尔排序

    python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...

  8. Scratch编程与高中数学算法初步

    scratch编程与高中数学算法初步 一提到编程,大家可能觉得晦涩难懂,没有一定的英语和数学思维基础的人,一大串的编程代码让人望而步,何况是中小学生.   Scratch是一款由麻省理工学院(MIT) ...

  9. 【原创】tarjan算法初步(强连通子图缩点)

    [原创]tarjan算法初步(强连通子图缩点) tarjan算法的思路不是一般的绕!!(不过既然是求强连通子图这样的回路也就可以稍微原谅了..) 但是研究tarjan之前总得知道强连通分量是什么吧.. ...

  10. Java && Python 算法面试常用类以及方法总结

    数据结构 逻辑结构上: 包括集合,线性结构,非线性结构. 存储结构: 顺序存储,链式存储,索引存储,散列存储. Java 常见数据结构 大专栏  Java && Python 算法面试 ...

随机推荐

  1. spring boot http status 400

    SpringBootAdmin不是Spring官方提供的模块,它包含了Client和Server两部分.server部分提供了用户管理界面,client即为被监控的服务.client需要注册到serv ...

  2. 官方使用logstash同步Mysql数据表到ES的摘抄

    官方文档地址:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#plugins-inputs-jdbc ...

  3. ERP 系统的核心是什么?有什么作用?

    ERP系统的核心就是系统的内部业务逻辑,这也是ERP复杂.专业性的体现!ERP系统需要适配企业的管理思想和业务流程,在技术上面也也要做到快速部署和个性化定制(客户化定制),而这些企业的规模不同.行业不 ...

  4. 无需Steam的Proton,在你的Linux运行任意Windows游戏!

    链接: https://pan.baidu.com/s/1QeJxj9_2aZPk2_uZMzpn9A 提取码: v6t6 包含的版本 Proton4.11  Proton4.2  Proton5.0 ...

  5. 关于aws的ec2实例导出成ova后在vmware中的网络配置不生效的问题

    在aws上的ec2实例,尤其是使用了aws市场中的ami创建的linux系统,默认情况下,网络配置都是通过dhcp自动获取的, 这周笔者将一台ec2实例(redhat/linux 8.3)导出/转换成 ...

  6. 关于aws cli命令的exit/return code分析

    最近总是收到一个备份脚本的失败邮件,脚本是之前同事写的,没有加入任何有调试信息,及有用的日志 于是去分析 ,脚本中有一条 aws s3 sync $srclocal  $dsts3 命令,然后根据这条 ...

  7. 一文读懂 MySQL 索引

    1 索引简介 1.1 什么是 MySQL 的索引 官方定义:索引是帮助 MySQL 高效获取数据的数据结构 从上面定义中我们可以分析出索引本质是一个数据结构,他的作用是帮助我们高效获取数据,在正式介绍 ...

  8. 最长公共前缀(Java)

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:strs = ["flower","flo ...

  9. Oracle 同义词详解(synonym)

    Oracle 同义词详解(synonym) 一.Oracle同义词概念 Oracle 数据库中提供了同义词管理的功能.同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性.在使 ...

  10. Collection接口中的方法的使用

    add(Object e):将元素e添加到集合coll中size():获取添加的元素的个数addAll(Collection coll1):将coll1集合中的元素添加到当前的集合中clear():清 ...