【软件设计师】算法

1、算法的效率

        时间复杂度:程序从开始到结束所需要的时间

        空间复杂度:算法在运行过程中临时占用存储空间大小的度量

        时间渐近复杂度:时间复杂度由最高次幂决定(判断大小技巧:将n=10代入)

       O(log2 n):二分查找法

        O(n):for(x=1;x<n;x++)

         O(n log2 n):堆排序(每次重建堆的时间复杂度是log2 n,n个元素基本上就是O(n log2 n) )

        O(n2):for(x=1;x<n;x++){for(j=1;j<n;j++)}              

        O(2的n次方):判断包含指定子序列,LCS最长公共子系列、钢管切割问题,动态规划自顶向下

        O(n!)是最大的,2的n次方次之

2、查找算法

        顺序查找:从头到尾比较关键字与表中元素,找到则返回成功,否则返回失败;时间复杂度O(n)

        二分查找:先确定有序且顺序的数组的中点位置mind=(low+hign)/2,将待查的k值与mid位置的key比较,若相等返回此位置,否则确定新的查找区间,时间复杂度O(long2 n)  [最多查找log2  (n+1)   次 ]

        哈希表查找:寻找关键字合集U,最大关键字为m,设计一个函数hash ,它以关键字为自变量,关键字的存储地址为因变量,将关键字映射到一个有限的、地址连续的区域T[0...n-1](n<<m)中,这个区间就称为散列表,散列表查找中使用的转换函数称为散列函数

3、排序算法         

        稳定排序和不稳定排序

        排序方法与类:

插入排序:        

        1.插入排序:

        稳定, 适合基本有序的情况

        2.shell排序:

        不稳定,插入排序的改进,引入了分组(一般拿奇数作为增量)。先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。        

 选择排序:

        1.直接选择排序

        不稳定,不管是否有序,都要一一比对。比如我们对 “8,7,1,3,9,2,7,6” 这组n个数据进行选择排序,首先我们先认为第1个数为最小数,然后分别与其他几个数进行比较,如果遇到比其小的就与其交换

        2.堆排序

        不稳定,每个节点的值都大于或等于其子节点的值,为最大堆;反之为最小堆。一般用数组来表示堆,下标为 i 的结点的父结点下标为(i-1)/2;其左右子结点分别为 (2i + 1)、(2i + 2)。

交换类排序:

        1.冒泡排序

        稳定,相邻元素之间的比较和交换。不管是否有序,都要一一比对。

        2.快速[交换]排序

        不稳定,采用分治法,平均性能最好。将原问题分解成若干个规模更小但结构与原问题相似的子问题。一般使用第一个元素作为基准。快速排序的最差情况--基本有序。进行一趟划分的计算时间为O(n)

        1.归并排序(也叫合并)

        稳定,不管是否有序,都要一一比对。是将两个或两个以上的有序子表合并成一个新的有序表。若将两个有序表合并成一个有序表,则称之为二路合并。

        2.基数排序

        稳定,适合元素很多而关键字较少的序列。借助关键字排序思想堆单逻辑关键字进行排序的方法(不是基于关键字比较的排序方法)。

4、排序算法策略

        若待排序列的记录数目n较小,可采用直接插入和简单选择排序。由于直接插入排序所需的记录移动操作较选择排序多,因而当记录本身信息量大时,用简单选择排序方法较好。

        若待排记录按关键字基本有序,适合采用直接插入排序或冒泡排序。

        若 N很大且关键字位数较少时,采用基数排序较好。

 5、算法策略

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

家政预约小程序07服务分类展示

目录 1 创建服务分类页面2 侧边栏选项卡配置3 配置数据列表4 从首页跳转到分类页总结 上一篇我们开发了首页的服务展示功能&#xff0c;本篇我们讲解一下服务分类功能的开发。在小程序中通常在底部导航栏有一个菜单可以展示所有服务&#xff0c;侧边选项卡可以展示分类信息&…

Python零基础一天丝滑入门教程(非常详细)

目录 第1章 初识python 第1节 python介绍 1.为什么要学习Python&#xff1f; 2.python排名 3.python起源 4.python 的设计目标 第2节 软件安装 第2章 快速上手&#xff1a;基础知识 第1节 Python3 基础语法 Python 变量 字面量 数据类型转换 Python3 注释 数据类…

垂类短视频:四川鑫悦里文化传媒有限公司

垂类短视频&#xff1a;内容细分下的新媒体力量 随着移动互联网的迅猛发展和智能手机的普及&#xff0c;短视频已成为当下最受欢迎的媒介形式之一。四川鑫悦里文化传媒有限公司而在短视频领域&#xff0c;一个新兴的概念——“垂类短视频”正逐渐崭露头角&#xff0c;以其独特…

设计模式 21 备忘录模式 Memento Pattern

设计模式 21 备忘录模式 Memento Pattern 1.定义 备忘录模式是一种行为型设计模式&#xff0c;它允许你将一个对象的状态保存到一个独立的“备忘录”对象中&#xff0c;并在之后恢复到该状态。 2.内涵 主要用于以下场景&#xff1a; 需要保存对象状态以备恢复&#xff1a; 当…

torch.matmul()的用法

这篇文章记录torch.matmul()的用法 这里仿照官方文档中的例子说明&#xff0c;此处取整数随机数&#xff0c;用于直观的查看效果&#xff1a; vector x vector 两个一维向量的matmul相当于点积&#xff0c;得到一个标量 tensor1 torch.randint(1, 6, (3,)) tensor2 torch.…

机器学习基础笔记

周志华老师的机器学习初步的笔记 绪论 知识分类 科学 是什么&#xff0c;为什么 技术 怎么做 工程 多快好省 应用 口诀&#xff0c;技巧&#xff0c;实际复杂环境&#xff0c;行行出状元 定义 经典定义 利用经验改善系统自身的性能 训练数据 模型 学习算法 分类 决策树…

Django5+React18前后端分离开发实战14 React-Router6 入门教程

使用nodejs18 首先&#xff0c;将nodejs切换到18版本&#xff1a; nvm use 18创建项目 npm create vitelatest zdpreact_basic_router_dev -- --template react cd zdpreact_basic_router_dev npm install react-router-dom localforage match-sorter sort-by npm run dev此…

kafka跨地区跨集群同步工具MirrorMaker2 —— 筑梦之路

MM2简介 KIP-382: MirrorMaker 2.0 - Apache Kafka - Apache Software Foundation 有四种运行MM2的方法&#xff1a; As a dedicated MirrorMaker cluster.&#xff08;作为专用的MirrorMaker群集&#xff09; As a Connector in a distributed Connect cluster.&#xff08…

使用IDEA远程debug调试

文章目录 应用背景开启方式IDEA设置启动脚本改造 参考资料 应用背景 springboot项目&#xff0c;部署到服务器上&#xff0c;需要开启远程debug跟踪代码。 使用idea开启远程debug。 开启方式 IDEA设置 选择 Edit Configuration 如图&#xff0c;点击加号&#xff0c;选择Re…

【机器学习】利用机器学习优化陆军战术决策与战场态势感知

&#x1f512;文章目录&#xff1a; &#x1f4a5;1.引言 &#x1f6f4;2.机器学习在陆军战术决策中的应用 &#x1f6e3;️2.1数据收集与预处理 &#x1f304;2.2模型构建与训练&#xff1a; &#x1f305;2.3实时决策支持&#xff1a; &#x1f305;2.4代码实现 &…

排序算法——上

一、冒泡排序&#xff1a; 1、冒泡排序算法的思想 我们从左边开始把相邻的两个数两两做比较&#xff0c;当一个元素大于右侧与它相邻的元素时&#xff0c;交换它们之间位置&#xff1b;反之&#xff0c;它们之间的位置不发生变化。冒泡排序是一种稳定的排序算法。 2、代码实现…

5月20日分割等和子集+最后一块石头的重量Ⅱ

416.分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和…

【ai】LiveKit Agent 的example及python本地开发模式工程实例

title: ‘LiveKit Agent Playground’ playgroundLiveKit Community playground的环境变量&#xff1a;LiveKit API # LiveKit API Configuration LIVEKIT_API_KEYYOUR_API_KEY LIVEKIT_API_SECRETYOUR_API_SECRET# Public configuration NEXT_PUBLIC_LIVEKIT_URLwss://YOUR_…

JAVA智慧工厂制造生产管理MES系统,全套源码,多端展示(MES与ERP系统的区别和联系)

MES与ERP系统的区别和联系 MES制造执行系统&#xff0c;是一套面向制造公司车间执行层的生产信息化管理系统。MES 可觉得公司提供涉及制造数据管理、计划排产管理、生产调度管理、库存管理、质量管理、人力资源管理、工作中心、设备管理、工具工装管理、采购管理、成本管理、项…

为什么推荐前端用WebStorm软件编程?

一、介绍 WebStorm是由JetBrains公司开发的一款JavaScript开发工具&#xff0c;被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。它支持JavaScript、ECMAScript 6、TypeScript、CoffeeScript、Dart和Flow等多种语言的代码…

大学搜题软件音乐类?分享三个支持答案和解析的工具 #微信#媒体

高效的学习工具可以帮助我们提高记忆力和理解能力&#xff0c;使知识更加深入人心。 1.彩虹搜题 这是个微信公众号 一款专门供全国大学生使用的查题神器!致力于帮助大学生解决学习上的难题,涵盖了大学生学习所需的学习资料。 下方附上一些测试的试题及答案 1、甲、乙合伙开…

goimghdr,一个有趣的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个有趣的 Python 库 - goimghdr。 Github地址&#xff1a;https://github.com/corona10/goimghdr 在图像处理和分析过程中&#xff0c;识别图像文件的类型是一个常见的需求。Python自带的imghdr…

开源与闭源:AI模型发展的两条路径

目录 前言1 数据隐私保护与用户数据安全1.1 开源大模型的透明性与挑战1.2 闭源大模型的控制与责任 2 商业应用的优劣比较2.1 开源大模型的灵活性与创新2.2 闭源大模型的可靠性与服务质量 3 社区参与与合作的差异3.1 开源大模型的社区驱动与协作3.2 闭源大模型的企业主导与保密性…

【openlayers系统学习】3.3假彩色图像合成(三个波段合成假彩色图像)

三、假彩色图像合成 在上一步中&#xff0c;我们使用 ol/source/GeoTIFF​ 源从单个多波段源&#xff08;具有红色、绿色、蓝色和Alpha波段&#xff09;渲染真彩色图像。在下面这个例子中&#xff0c;我们将从可见光谱之外提取数据&#xff0c;并使用它来呈现假彩色合成。 我…

【基于 PyTorch 的 Python 深度学习】9 目标检测与语义分割(2)

前言 文章性质&#xff1a;学习笔记 &#x1f4d6; 学习资料&#xff1a;吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容&#xff1a;根据学习资料撰写的学习笔记&#xff0c;该篇主要介绍了优化候选框的几种方法。 一、优化候选框的…