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. Gitlab备份以及恢复

    1.迁移准备工作和思路 从a服务器迁移到b服务器,由于Gitlab自身的兼容性问题,高版本的Gitlab无法恢复低版本备份的数据,需要注意在b服务器部署和a服务器一样版本的gitlab,部署好环境后开 ...

  2. Beats:使用 Elastic Stack 记录 Python 应用日志

    文章转载自:https://elasticstack.blog.csdn.net/article/details/112259500 日志记录实际上是每个应用程序都必须具备的功能.无论你选择基于哪种技 ...

  3. VMware安装Win11+WSA子系统和使用教程

    VMware安装Win11+WSA子系统和使用教程 作者:Sna1lGo 时间:2022/9/29 下载相关文件: Win11镜像:Download Windows 11 (microsoft.com ...

  4. Linux Subsystem For Android 11!适用于Debian GNU/Linux的Android子系统,完美兼容ARM安卓软件!

    本文将讲述如何在Debian Stable 系统安装一个Android 11子系统,并且这个子系统带有Houdini可以兼容专为移动设备开发的ARM软件.在root权限下,编辑/etc/apt/sou ...

  5. Linux+Wine运行QQTIM (2022年9月)

    测试的版本Tim3.4.0 QQ9.6.7 如果你的系统没有Wine先装Wine,Wine在各大发行版的源都能找到.记住32位和64位的Wine都要装 去https://tubentubentu.pa ...

  6. 【C++】从零开始的CS:GO逆向分析3——写出一个透视

    [C++]从零开始的CS:GO逆向分析3--写出一个透视 本篇内容包括: 1. 透视实现的方法介绍 2. 通过进程名获取进程id和进程句柄 3. 通过进程id获取进程中的模块信息(模块大小,模块地址, ...

  7. MVC下拉框

    <select> @{ foreach (var item in 循环泛型) { <option value="@item.ID">@item.属性名< ...

  8. LINQ使用小贴士

    LINQ中的排序操作符 OrderBy:按升序对序列的元素进行排序.OrderByDescending:按降序对序列的元素排序.ThenBy:按升序对序列中的元素执行后续排序.ThenByDescen ...

  9. 重新整理 .net core 实践篇 ———— linux上排查问题 [外篇]

    前言 简单介绍一下在排查问题.献给初学者. 该文的前置篇: https://www.cnblogs.com/aoximin/p/16838657.html 正文 什么是linux系统 linux 是基 ...

  10. Mysql之PXC高可用

    PXC高可用 1.环境准备 pxc1: centos7 10.0.0.7 pxc2: centos7 10.0.0.17 pxc3: centos7 10.0.0.27 pxc4: centos7 1 ...