python_基础算法

2023-10-27

一、二分查找

 1 def binary(binary_para, search):
 2     bi = int(len(binary_para)/2)
 3     if search == binary_para[0]:
 4         print('数存在,并存在在列表第一位')
 5     elif len(binary_para)>1:
 6         if binary_para[bi] > search:
 7             print('分段值(前):',binary_para[bi])
 8             binary(binary_para[:bi],search)
 9         elif binary_para[bi] < search:
10             print('分段值(后):',binary_para[bi])
11             binary(binary_para[bi:],search)
12         else:
13             print('你寻找的数存在列表里')
14     else:
15         print('列表里不存在你寻找的数')
16 
17 if __name__ == '__main__':
18     li = list(range(8,30000,10))
19     binary(li, 12138)

二、冒泡排序

 1 def bub_sort(sort_list):
 2     for i in range(len(sort_list)-2):
 3         for j in range(len(sort_list)-i-1):
 4             if sort_list[j]>sort_list[j+1]:
 5                 temp = sort_list[j+1]
 6                 sort_list[j+1] = sort_list[j]
 7                 sort_list[j] = temp
 8 
 9 
10 if __name__ == '__main__':
11     li = [65, 1, 45, 77, 3, 9, 43, 23, 7, 53, 213, 10]
12     bub_sort(li)
13     print(li)

三、选择排序

 1 def select_sort(list_sort):
 2     for i in range(len(list_sort)):
 3         min_index = i
 4         for j in range(i, len(list_sort)):
 5             if list_sort[min_index] > list_sort[j]:
 6                 min_index = j
 7         temp = list_sort[i]
 8         list_sort[i] = list_sort[min_index]
 9         list_sort[min_index]=temp
10 
11 if __name__ == '__main__':
12     li = [65, 1, 45, 77, 3, 9, 43, 23, 7, 53, 213, 10]
13     select_sort(li)
14     print(li)

四、插入排序

 1 def insert_sort(sort_list):
 2     for i in range(1,len(sort_list)):
 3         insert_index = i    # 索引当做类似指针的使用
 4         insert_value = sort_list[i]    # 把要插入的值存下来,以免后面被覆盖
 5         while insert_index > 0 and insert_value < sort_list[insert_index-1]:
 6             sort_list[insert_index] = sort_list[insert_index-1]
 7             insert_index -=1
 8         sort_list[insert_index] = insert_value
 9 
10 if __name__ == '__main__':
11     li = [65, 1, 45, 77, 3, 9, 43, 23, 7, 53, 213, 10]
12     insert_sort(li)
13     print(li)
14     

五、快速排序

图片来源:https://www.jianshu.com/p/5f38dd54b11f

 

 1 def quick_sort(list_sort,start,end):
 2     if start >= end:
 3         return
 4     start_index = list_sort[start]
 5     left_flag = start
 6     right_flag = end
 7 
 8     while left_flag < right_flag:
 9 
10         while left_flag < right_flag and start_index <= list_sort[right_flag]:
11             right_flag -=1
12         list_sort[left_flag] = list_sort[right_flag]
13 
14         while left_flag < right_flag and start_index >= list_sort[left_flag]:
15             left_flag += 1
16         list_sort[right_flag] = list_sort[left_flag]
17 
18     list_sort[left_flag] = start_index
19     quick(list_sort, start, end, left_flag)     # 递归调用
20 
21 def quick(list_sort,start,end,left_flag):
22     quick_sort(list_sort,start,left_flag-1)
23     quick_sort(list_sort,left_flag+1,end)
24 
25 if __name__ == '__main__':
26     li = [64, 77, 67, 8, 6, 84, 55, 20, 43, 67, 67]
27     quick_sort(li, 0, len(li) - 1)
28     print(li)

 

转载于:https://www.cnblogs.com/Vera-y/p/11506276.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python_基础算法 的相关文章

  • 查找两个字典的匹配键值对

    检查一个字典的键值对是否也存在于其他字典中的最有效方法是什么 假设我有两个字典dict1 and dict2这两个字典有一些共同的键值对 我想找到这些并打印出来 做到这一点最有效的方法是什么 请建议 一种方法是 d inter dict k
  • Urllib 的 urlopen 在某些网站上被破坏(例如 StackApps api):返回垃圾结果

    我在用着urllib2 s urlopen函数尝试从 StackOverflow api 获取 JSON 结果 我正在使用的代码 gt gt gt import urllib2 gt gt gt conn urllib2 urlopen h
  • 在python中合并3个dict()

    如果多个字典之间有公共字符串 是否有逻辑合并多个字典的方法 即使这些公共字符串在一个 dict 的值与另一个 dict 的键之间匹配 我在 SO 上看到了很多类似的问题 但似乎没有一个问题能解决我将 较低级别文件 中的多个键与较高键 值中的
  • SparkSession 初始化需要很长时间

    SparkSession 初始化需要很长时间才能成功 这是我的代码 import findspark findspark init import pyspark from pyspark sql import SparkSession sp
  • 在 Windows 上的 python2.5 上安装 Openpyxl

    我努力了easy install install openpyxl and python setup install 两者都失败了 我也尝试过easy install openpyxl并再次失败 我包括了我得到的输出 当我尝试时easy i
  • Python:当为变量分配新内容时,“旧”内存是否被释放?

    如果为变量分配了任何新内容 为 旧内容 分配的内存是否会 正确 释放 例如 在以下脚本中 在为 a 分配一些新内容后 变量 a 作为零数组的内存是否会被释放 import numpy a numpy zeros 1000 a a 1 我想象
  • argparse - 禁用相同参数的出现

    我正在尝试使用 argparse 禁用一个命令行中出现相同的参数 python3 argument1 something argument2 argument1 something else 这意味着这应该会引发错误 因为 argument
  • 忽略覆盖率报告中的空文件

    覆盖率 py https github com nedbat coveragepy会包括 init py在其报告中并将其显示为 0 行 但覆盖率为 100 我想从覆盖率报告中排除所有空白文件 我不能只添加 init py to omit作为
  • 更改散景图中选项卡的样式

    我想知道是否有办法更改散景图上生成的选项卡的属性 诸如增加文本字体 更改制表符宽度等更改 以下是用于生成具有两个选项卡的绘图的简单代码 from bokeh models widgets import Panel Tabs from bok
  • 使用 Pytest 捕获 SystemExit 消息

    我正在使用 pytest 编写测试 我遇到了一些函数抛出异常的情况SystemExit如果输入错误 终端上会显示一些错误消息 我想为以下情况编写测试SystemExit抛出并验证输出错误消息中是否有特定字符串 这是代码 def test v
  • Pandas 使用 NaN 进行数据透视或重塑数据框

    我有这个数据框 我需要根据以下数据进行旋转或重塑frame col df frame 0 0 1 1 2 2 3 0 4 1 5 2 pvol 0 nan 1 nan 2 nan 3 23 1 4 24 3 5 25 6 vvol 0 10
  • 使用存储的密钥作为环境变量

    我有一个秘密密钥存储在 GCP 的秘密管理器中 我们的想法是使用该密钥通过云功能获取预算列表 现在 我可以从代码中访问该密钥 但我面临的问题是我需要使用该密钥设置一个环境变量 这是我添加密钥的方式 如果您的本地目录中有该文件 但是还有其他方
  • sqlalchemy,使用反向包含(不在)子列值列表中进行选择

    我在flask sqlalchemy 中有一个典型的帖子 标签 与一篇帖子相关的许多标签 关系 并且我想选择我提供的列表中未标记任何标签的帖子 首先 我建立的模型 class Post db Model id db Column db In
  • python中终止进程的跨平台方法

    当我尝试使用 subprocess Popen terminate 或 Kill 命令终止 Windows 中的进程时 出现访问被拒绝错误 如果文件不再存在 我真的需要一种跨平台的方式来终止进程 是的 我知道这不是做我正在做的事情的最优雅的
  • PyGTK TreeView 中的自动换行

    如何在 PyGTK TreeView 中自动换行文本 gtk TreeView 中的文本是使用 gtk CellRendererText 渲染的 文本换行归结为在单元格渲染器上设置正确的属性 为了让文本换行 您需要设置wrap width单
  • 我以为 Python 通过引用传递了所有内容?

    采取以下代码 module functions py def foo input new val input new val module main py input 5 functions foo input 10 print input
  • 函数调用中的星号[重复]

    这个问题在这里已经有答案了 我正在使用 itertools chain 以这种方式 展平 列表列表 uniqueCrossTabs list itertools chain uniqueCrossTabs 这与说有什么不同 uniqueCr
  • 使用 python pyad 访问对象 [] 时出现问题

    我在尝试使用 pyad 访问活动目录用户属性时遇到问题 这是我的代码 user pyad aduser ADUser from cn tuser print user get attribute lastLogonTimestamp 这些是
  • 计算列表中的子列表

    L 2 4 5 6 2 1 6 6 3 2 4 5 3 4 5 我想知道任意子序列出现了多少次 s 2 4 5 例如会返回2次 I tried L count s 但它不起作用 因为我认为它期望寻找类似的东西 random numbers
  • 使用自定义层运行 Keras 模型时出现问题

    我目前正在攻读学士学位论文FIIT STU https www fiit stuba sk en html page id 749 其主要目标是尝试复制和验证以下结果study http arxiv org abs 2006 00885 这

随机推荐

  • React入门(二)

    React入门 二 这一讲 我们来说说React的代码细节 一 整体结构 React官网给出的这个案例 实现的功能是一个小游戏 tic tac toe 游戏在一个九宫格中进行 双方对弈 一方使用圈 另一方使用叉 看看谁先在横 竖或对角线上形
  • 【前端项目】博客系统(页面设计)

    文章目录 一 预期效果 二 实现博客列表页 三 实现博客正文页 四 实现博客登录页 五 实现博客编辑页 一 预期效果 代码详情见 gitee链接 博客列表页效果 博客详情页效果 博客登录页效果 博客编辑页效果 二 实现博客列表页 blog
  • C++中to_string函数的用法

    to string 函数 将数字常量转换为字符串 返回值为转换完毕的字符串 头文件 include lt string gt 必须加 string s to string i 将整数i转换为字符串表示形式 string to string
  • WebRtc集锦

    1 RTP协议全解析 H264码流和PS流 对牛乱弹琴的博客 CSDN博客 rtp流和ps流 WebRTC研究 2 Kurento作为IPC的WebRTC网关 译 对牛乱弹琴的博客 CSDN博客 音视频传输 RTP协议详解和H 264打包方
  • 动态规划(C语言实现)

    文章目录 动态规划的介绍 动态规划的定义 什么叫做分治递归 递推 递归 1 定义 2 引入 分而治之 1 定义 2 过程 什么叫做记忆储存 斐波拉契数列的递归求法 斐波拉契数的定义 传统的递归解法 动态规划解法 感悟与思考 动态规划 动态规
  • 高并发模拟多个用户同时访问接口

    前些天客户需要测试一下接口可以承受多大的并发量 当时就想到了countDownLatch 就小小的提了一下意见就被安排到我的头上 废话就不多说了 为了不浪费你们的时间 先说好这代码是测试单个接口或者方法的并发量的 先说思路 再上代码 整体代
  • 通过id获取input标签元素对象_学点新姿势: 通过DOM Clobbering 引发GMail的的XSS

    什么是AMP4Email AMP4Email 也称为动态邮件 是Gmail的一项新功能 可使电子邮件包含动态HTML内容 尽管编写包含HTML标签的电子邮件已经存在了很多年 但通常情况下都是假定HTML只包含静态内容 即某种格式 和一些图像
  • 计算机网络——快速了解常见应用层协议体系

    文章目录 加密算法 对称加密 非对称加密 一 远程登录 TELNET SSH 1 Telnet 2 SSH 二 文件传输 FTP SFTP FTPS 1 FTP 2 SFTP 3 FTPS SSL工作原理 三 电子邮件 SMTP POP I
  • Gdal-master、PROJ 8.2.1源码下载及编译(Win10+VS2022)

    为了编译Gdal master的源码 需要PROJ的支持 而PROJ又需要SQLite的支持 在电脑创建目录 D My3rdParty 其下设置include lib bin子目录 用于保存源码编译结果 并将目录 D My3rdParty
  • 离散数学(七):一阶逻辑符号化

    离散数学 六 习题课 见雨课堂随堂测试1 2 3 之前学习了命题逻辑 那一阶逻辑和命题逻辑有什么区别呢 其实一阶逻辑是命题逻辑的细化 它将命题分成了个体词和谓词 至于为什么这么做 我的理解是描述的更加细化了 加上量词的辅助作用 可以表达存在
  • 【python】给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    示例 1 输入 123 输出 321 示例 2 输入 123 输出 321 示例 3 输入 120 输出 21 注意 假设我们的环境只能存储得下 32 位的有符号整数 则其数值范围为 231 231 1 请根据这个假设 如果反转后整数溢出那
  • html元素的title属性

    Title 属性 The title global attribute contains text representing advisory information related to the element it belongs to
  • (六十五)基于决策树的信用评级

    决策树的结构与划分选择 20世纪70年代末至20世纪80年代初 Quinlan开发了一系列决策树模型 最开始是ID3算法 后来是C4 5算法 随后又发布了C5 0算法 1984年 多位统计学家在著名的 Classification and
  • QPixmap vs. QImage

    Development Tutorials Graphics Performance lt Development Tutorials Contents 1 QPixmap vs QImage 1 1 QImage 1 2 QPixmap
  • docker入门实践,实战搭建nginx

    查找现成的nginx镜像 可以通过docker search nginx 命令来获取 可以看到有很多 我们一般选取stars最多 即第1个来使用 docker search nginx NAME DESCRIPTION STARS OFFI
  • 牛客网-数列还原

    数列还原 解题思路 稍加分析 根据数据规模 先对模糊的数字全排列吗 然后组成完整的数组 再判断完整的数组是否满足条件 失误 把简单的问题想的有点复杂了 import java util public class Main public st
  • 从键盘输入一个字符,判断该字符是否大写字母、小写字母、数字字符或其他字符。分别输出对应的提示信息。

    输入要求 输入一个字符 输出要求 如果该字符是大写字母 则输出 upper 若是小写字母 则输出 lower 若是数字字符 则输出 digit 若是其他字符 则输出 other 输出不含双引号 输入样例 1 输出样例 digit inclu
  • 设计模式——代理模式

    代理模式 代理模式介绍 代理模式特点 代理模式的结构 动态代理 代理模式介绍 其实在我们生活中各行各业也都会设计到代理 比如租房子 我们可以找中介公司 让中介公司帮我们去找合适的房源 这就是代理模式 再比如 有些同学找男朋友女朋友也会通过中
  • go 判断两个 slice/struct/map 是否相等

    可以通过 reflect DeepEqual 比较两个 slice struct map 是否相等 package main import fmt reflect type A struct s string func main a1 A
  • python_基础算法

    一 二分查找 1 def binary binary para search 2 bi int len binary para 2 3 if search binary para 0 4 print 数存在 并存在在列表第一位 5 elif