当前位置: 首页 > news >正文

算法基础(python版本)

第二章 算法设计思想

一、搜索排序

1.排序算法

https://visualgo.net/zh/sorting

(1)冒泡排序
# 思路:
# (1)比较相邻元素,如果第一个比第二个大,则交换他们
# (2)第一轮下来,可以保证最后一个数一定是最大的;第二轮下来,可以保证倒数第二个数一定是第二大的。
# (3)执行n-1轮,可以完成排序。
# 比较n-1次?用[3,2,1]冒泡排序后只需要比较2次。
def bubleSort(arr):for j in range(len(arr) - 1):for i in range(len(arr) - 1):if arr[i] > arr[i+1]:temp = arr[i]arr[i] = arr[i + 1]arr[i + 1] = temparr = [5, 4, 3, 2, 1]
bubleSort(arr)
print(arr)
(2)选择排序
# 思路:
# (1)找到数组中的最小值,选中它并将其放置在第一位 → 经过第一轮交换,第一个值肯定是最小的。
# (2)接着找到第二小的值,选中必将其放置在第二位 → 经过第二轮交换,第二个值肯定是第二小的。
# 以此类推,交换n-1轮def selectionSort(arr):for i in range(len(arr) - 1):indexMin = ifor j in range(i, len(arr)):if arr[j] < arr[indexMin]:indexMin = jtemp = arr[i]arr[i] = arr[indexMin]arr[indexMin] = temparr = [2, 3, 1] # 最坏的情况
selectionSort(arr)
print(arr)

2.搜索算法

http://data.biancheng.net/view/336.html

# 二分插入
# 为什么更新左边界需+1,但是更新右边界却不需要+1?
# 使用了左闭右开的搜索区间,即[l, r)。这意味着左边界l是包含在搜索区间内的,而右边界r是不包含在搜索区间内的。所以,当更新左边界l时,需要加1,因为已经排除了中间元素,而当你更新右边界r时,这不需要加1,因为要保持右边界不包含在搜索区间内。这样做的好处是,当搜索区间为空时,l和r会相等,而且l就是目标元素应该插入的位置。
# 二分查找:从列表中查找元素下标
def binaryInsertIndex(arr, ele):if ele not in arr:return -1l = 0r = len(arr) - 1while l < r:mid = (l + r) // 2if ele < arr[mid]:r = midelse:l = mid + 1 # ele不小于arr[mid],意味着ele >= arr[mid],所以需加上1。return larr = [2,3,6,7]
element = 3
arr.insert(binaryInsertIndex(arr, element), element)
print(arr)

相关文章:

算法基础(python版本)

第二章 算法设计思想 一、搜索排序 1.排序算法 https://visualgo.net/zh/sorting (1)冒泡排序 # 思路&#xff1a; # (1)比较相邻元素&#xff0c;如果第一个比第二个大&#xff0c;则交换他们 # (2)第一轮下来&#xff0c;可以保证最后一个数一定是最大的&#xff1b;第二…...

使用Arrays.Sort并定制Comparator排序解决合并区间

合并区间-力扣算法题56题 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&am…...

【机器学习】039_合理初始化

一、稳定训练 目标&#xff1a;使梯度值在更合理的范围内 常见方法如下&#xff1a; 将乘法变为加法 ResNet&#xff1a;当层数较多时&#xff0c;会加入一些加法进去 LSTM&#xff1a;如果时序序列较长时&#xff0c;把一些对时序的乘法做加法 归一化 梯度归一化&…...

使用Arrays.asList与不使用的区别

在写算法的时候&#xff0c;遇到了有的题解使用的是Arrays.asList&#xff0c;也有的是直接新建一个List集合将元素加进去的。 看了一下算法的时间&#xff0c;两者居然相差了9秒。 算法原地址&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长…...

基于可变形卷积和注意力机制的带钢表面缺陷快速检测网络DCAM-Net(论文阅读笔记)

原论文链接->DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Based on Deformable Convolution and Attention Mechanism | IEEE Journals & Magazine | IEEE Xplore DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Base…...

el-table 对循环产生的空白列赋默认值

1. el-table 空白列赋值 对el-table中未传数据存在空白的列赋默认值0。使用el-table 提供的插槽 slot-scope&#xff1a;{{ row || ‘0’ }} 原数据&#xff1a; <el-table-column label"集镇" :propcity ><template slot-scope"{row}">{{…...

新一代网络监控技术——Telemetry

一、Telemetry的背景 传统的网络设备监控方式有SNMP、CLI、Syslog、NetStream、sFlow&#xff0c;其中SNMP为主流的监控数据方式。而随着网络系统规模的扩大&#xff0c;网络设备数量的增多&#xff0c;网络结构的复杂&#xff0c;相应监控要求也不断提升&#xff0c;如今这些…...

java斗牛,咋金花

无聊时间&#xff0c;打发下游戏 简单说下思路 目录 1.创建牌对象 2.创建52张牌&#xff0c;不包含大小王 3.洗牌 4.发牌 1.创建牌对象 2.创建52张牌&#xff0c;不包含大小王 3.洗牌 4.发牌 /*** 扑克牌*/ public class Poker {/*** 花色*/private String cardSuits…...

深信服技术认证“SCSA-S”划重点:信息收集

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 深信服安全服务认证工程师…...

代码逻辑修复与其他爬虫ip库的应用

在一个项目中&#xff0c;由于需要设置 http_proxy 来爬虫IP访问网络&#xff0c;但在使用 requests 库下载文件时遇到了问题。具体表现为在执行 Python 脚本时&#xff0c;程序会阻塞并最终超时&#xff0c;无法正常完成文件下载。 解决方案 针对这个问题&#xff0c;我们可以…...

字符串结尾空格比较相关参数BLANK_PAD_MODE(DM8:达梦数据库)

DM8:达梦数据库 字符串结尾空格比较相关参数BLANK_PAD_MODE 环境介绍1 BLANK_PAD_MODE01.1 初始化数据库1.2 创建测试表 T0 2 BLANK_PAD_MODE12.1 初始化数据库2.2 创建测试表 T1 3 BLANK_PAD_MODE只对字段varchar类型生效3.1 BLANK_PAD_MODE 对char 类型对比无效3.2 在两个数据…...

微型计算机原理MOOC题

一、8254 1.掉坑了&#xff0c;AL传到端口不意味着一定传到的是低位&#xff0c;要看控制字D5和D4&#xff0c;10是只写高位&#xff0c;所以是0A00.。。 2. 3. 4.待解决&#xff1a;...

TensorFlow实战教程(十八)-Keras搭建卷积神经网络及CNN原理详解

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章详细讲解了Keras实现分类学习,以MNIST数字图片为例进行讲解。本篇文章详细讲解了卷积神经网络CNN原理,并通过Keras编写CNN实现了MNIST分类学习案例。基础性文章,希望对您有所帮助! 一…...

uniapp为什么能支持多端开发?uniapp底层是怎么做的?

文章目录 前言uniapp为什么能支持多端开发&#xff1f;uniapp底层是怎么做条件编译uniapp的语法uniapp如何编译为不同端的代码uniapp的底层是如何做平台特性适配的呢&#xff1f;后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;uniapp &…...

《数据仓库入门实践》

前言&#xff1a; 1、问什么要写这篇博客&#xff1f; 随着自己在数仓岗位工作的年限增加&#xff0c;对数仓的理解和认知也在发生着变化 所有用这篇博客来记录工作中用到的知识点与经验 2、这篇博客主要记录了哪些内容&#xff1f; 在日常工作中&#xff0c;发现刚接触不久数仓…...

什么是arguments对象?

arguments 对象是 JavaScript 中的一个特殊对象&#xff0c;它包含了函数被调用时传入的所有参数。arguments 对象是一个类数组对象&#xff0c;它有一个 length 属性和按数字索引的元素。 每个函数在执行时都会自动创建一个 arguments 对象。我们可以通过arguments去访问参数…...

Java LinkedList链表、HashSet、HashMap

一、Java LinkedList&#xff1a; 链表&#xff08;LinkedList&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;在每一个节点里存储下一个节点的地址。链表分为单向链表和双向链表。单向链表包含两个值&#xff1a;当前节点的值和指向下一个节点的链…...

Linux中清除cache/buffer方法

1、查看Linux中的cache/buffer情况&#xff1a; free -h 2、仅清除页面缓存PageCache方法&#xff1a; echo 1 > /proc/sys/vm/drop_caches 3、清除目录项和inode节点&#xff1a; echo 2 > /proc/sys/vm/drop_caches 4、清除页面缓存、目录项和inode节点&#xff1a;…...

github批量仓库克隆,git clone某个用户的所有仓库

利用github的api工具&#xff0c; 首先拿到用户名为kevin的所有仓库的url&#xff1a; curl "https://api.github.com/users/kevin/repos?per_page100&&page1" | grep -w clone_url >clone.txt过滤一下&#xff1a; grep -o https://[^"]* clone…...

防爆智能安全帽、防爆手持终端,防爆智能矿灯守护安全,在煤矿安全生产远程可视化监管中的应用

煤矿安全新守护&#xff1a;如何通过防爆智能装备实现远程可视化监管 煤矿是国民经济的重要支柱产业&#xff0c;但长期以来&#xff0c;安全生产事故的频发一直是困扰煤矿行业发展的严峻问题。安全生产事故不仅危及矿工的生命安全&#xff0c;也对企业和地方经济造成了重大的…...

运维实战:监控与维护生产环境的DeOldify模型服务

运维实战&#xff1a;监控与维护生产环境的DeOldify模型服务 作为一名运维工程师&#xff0c;最怕的不是服务上线&#xff0c;而是上线之后。尤其是像DeOldify这样的AI模型服务&#xff0c;它不像普通的Web应用&#xff0c;背后是复杂的深度学习模型和GPU计算资源。服务跑起来…...

别再只懂泊松分布了:用Python实战模拟用户点击流(从均匀分布采样到事件序列生成)

从泊松过程到用户行为模拟&#xff1a;Python实战事件序列生成 在电商推荐系统或移动应用分析中&#xff0c;我们经常需要模拟真实用户的点击行为数据。传统方法往往简单随机生成时间戳&#xff0c;但这与真实用户行为模式相去甚远。实际上&#xff0c;用户点击流更符合点过程的…...

【多线路故障】含sop的配电网故障重构研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

反向海淘爆发期,taocarts如何用技术破解代购供应链对接难题

随着反向海淘的持续升温&#xff0c;“反向海淘为什么火了”成为跨境从业者热议的话题&#xff0c;核心原因在于中国供应链的优势释放与海外市场的刚需缺口&#xff0c;而代购企业的核心痛点的是货源对接低效、数据不同步、人工成本高。作为专注淘宝1688反向代购业务的智能化系…...

Wox终极指南:如何用跨平台启动器提升10倍工作效率?

Wox终极指南&#xff1a;如何用跨平台启动器提升10倍工作效率&#xff1f; 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 你是否厌倦了在Windows、Mac或Linux系统中反复点击菜单寻找应用&#xf…...

裸金属部署实战(ARM Cortex-M7边缘节点全栈裸机开发手记)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;裸金属开发环境搭建与工具链配置 硬件准备与 BIOS/UEFI 设置 裸金属开发要求直接控制物理硬件资源&#xff0c;因此需禁用 Secure Boot、启用 Legacy Boot&#xff08;或 UEFI 模式下正确配置启动签名…...

若依(RuoYi-Vue)代码生成

实验步骤1. 创建数据库表在数据库 abc 中执行 SQL&#xff0c;创建学生信息表&#xff1a;2. 若依系统导入表登录若依管理系统进入【系统工具】→【代码生成】点击【导入】&#xff0c;选择 my_student 表并导入3. 编辑生成配置点击【编辑】&#xff0c;配置基本信息、字段、生…...

Bodymovin扩展面板:5步快速上手After Effects动画导出终极指南

Bodymovin扩展面板&#xff1a;5步快速上手After Effects动画导出终极指南 【免费下载链接】bodymovin-extension Bodymovin UI extension panel 项目地址: https://gitcode.com/gh_mirrors/bod/bodymovin-extension Bodymovin扩展面板是连接Adobe After Effects与Web、…...

金融NLP实战:基于FinSight构建智能舆情监控系统

1. 项目概述&#xff1a;金融文本洞察的“显微镜”在金融这个信息密度极高的领域&#xff0c;每天产生的研报、公告、新闻、社交媒体讨论浩如烟海。对于分析师、投资者和风控人员来说&#xff0c;如何从这些非结构化的文本海洋中&#xff0c;快速、精准地提取出关键信息、洞察市…...

【中等】回文最少分割数-Java

分享一个大牛的人工智能教程。零基础&#xff01;通俗易懂&#xff01;风趣幽默&#xff01;希望你也加入到人工智能的队伍中来&#xff01;请轻击人工智能教程大家好&#xff01;欢迎来到我的网站&#xff01; 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑&#x…...