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. secureCRT登录ubuntu 报错:`No compatible key-exchange method. The server supports these methods: diffie-hellman`

    在VMware虚拟机中安装好ubuntu 20.04,已安装并启动sshd,但是使用secureCRT远程登录时则报错: Key exchange failed. No compatible key- ...

  2. 利用python对websocket进行并发压测

    简述 产品经理鉴于运营反馈并对程序的websocket长连接保持怀疑的态度,让我对websocket服务器进行压力测试,我内心是拒绝的. 开发思路 查阅websocket的相关资料,查到python的 ...

  3. 8Hello world

    Name=input("请输入你的名字:") print('欢迎你',Name)

  4. 分享一个Vue实现图片水平瀑布流的插件

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.需求来源 今天碰到了一个需求,需要在页面里,用水平瀑布流的方式,将一些图片进行加载,这让我突然想起我很久以前写的一篇文章<JS两 ...

  5. Java8新特性之Stream流(含具体案例)

    一.概述   Stream 流是 Java 8 新提供给开发者的一组操作集合的 API,将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选.排序.聚合等.元素 ...

  6. Python生成10个八位随机密码

    #生成10个八位随机密码 import random lst1=[ chr(i) for i in range(97,123) ] #生成26为字母列表 lst2=[i for i in range( ...

  7. LeetCode------两数之和(3)【数组】

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 ...

  8. 齐博X1忘记管理员密码了怎么办?如何强制进后台?

    当你忘记密码,或者是某些原因导致进不了后台的话,这个时候你修改一下根目录的admin.php文件,把文件第二行 //define('SUPER_ADMIN',true); 前面的 // 双斜杠删除,再 ...

  9. Golang 和 Python 随机生成N位字符串

    Golang: func RandomString(n int) string { var letters = []byte("ABCDEFGHIGKLMNOPQRSTUVWXYZabcde ...

  10. 永久解决Ubuntu下adb权限问题

    在Linux环境下使用adb链接手机,经常会遇到全下问题,如下: adb: unable to connect for root: insufficient permissions for devic ...