11.4.软件系统分析与设计-算法的分析与设计

news2024/11/23 21:16:59

算法的分析与设计

涉及到的考点:

  1. C语言
  2. 数据结构(树、链表)–考的不多
  3. 时间复杂度和空间复杂度的计算
  4. 排序算法
  5. 四大经典算法

程序设计语言的基本成分

数据成分:指一种程序设计语言的数据和数据类型。数据分为常量(程序运行时不可改变)、变量(程序运行时可以改变)、全局量(存储空间在静态数据区分配)、局部量(存储空间在堆栈区分配)。数据类型有整型、字符型、双精度、单精度浮点型、布尔型等。
运算成分:指明允许使用的运算符号及运算规则。包括算术运算、逻辑运算、关系运算、位运算等。
控制成分:指明语言允许表述的控制结构。包括顺序结构、选择结构、循环结构(初始化+循环体+循环条件)
传输成分:指明语言允许的数据传输方式。如赋值处理,数据的输入输出
在这里插入图片描述

函数

函数:C程序由一个或多个函数组成,每个函数都一个名字,其中有且仅有一个名字为mai的函数作为程序运行时的起点。函数是程序模块的主要成分,是一段具有独立功能的程序。函数使用涉及三个概念:函数定义、函数声明(先声明后使用)、函数调用。

  • 传值调用:将实参的值传递给形参,形参的改变不会导致调用点所传的实参的值改变。实参可以是合法的变量、常量和表达式。
  • 传址调用:即引用调用,将实参的地址传递给形参,即相当于实参存储单元的地址引用,因此其值改变的同时就改变了实参的值。实参不能为常量,只能是合法的变量和表达式。

因此,在编程时,要改变参数值,就传址,不改变,就传值。

返回值的类型 函数名(形式参数) //函数首部
{
	函数体;//这个函数具体要干什么
}

C语言示例

冒泡排序

#include <stdio.h>
void bubble_sort(int arr[],int len){
    int i,j,temp;
    for(i = 0; i < 1en - 1; i+){
        for (j = 0; j < len - 1-i; j++){
            if (arr[j] > arr[j + 1]){
                temp = arr[j];
                arr[j] =a rr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main(){
    int arr[]={22,34,3,32,82,55,89,50,37,5,64,35,9,70};
    int len sizeof(arr)/sizeof(arr[0]);
    bubble_sort(arr,len);
    int i;
    for (i=0;i<len;i++)
        printf("%d "arr[i]);
    
    return 0;
}

算法复杂度

算法的复杂度:

  • 时间复杂度是指程序运行从开始到结束所需要的时间。
  • 复杂度是指对一个算法在运行过程中临时占用存储空间大小的度量。一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小

常见的对算法执行所需时间的度量:O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)

上述的时间复杂度,经常考到,需要注意的是,时间复杂度是一个大概的规模表示,一般以循环次数表示,O(n)说明执行时间是的正比,另外,log对数的时间复杂度一般在查找二叉树的算法中出现。渐进符号O表示一个渐进变化程度,实际变化必须小于等于O括号内的渐进变化程度。

排序算法

在这里插入图片描述

经典算法

分治法对于一个规模为的问题,若该问题可以容易地解决则直接解决;否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解决这些子问题,然后将各子问题的解合并得到原问题的解。

回溯法(Backtracking)是一种选优的暴力搜寻法。但是,由于暴力,回溯法的时间复杂度较高,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回
再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。

动态规划法(Dynamic Programming):在求解问题中,对于每一步决策,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其它局部解,以每一步都是最优解来保证全局是最优解。

贪心法:总是做出在当前来说是最好的选择,而并不从整体上加以考虑,它所做的每步选择只是当前步骤的局部最优选择,但从整体来说不一定是最优的选择。由于它不比为了寻找最优解而穷尽所有可能解,因此其耗费时间少,一般可以快速得到满意的解,但得不到最优解。

经典总结

分治法特征:把一个问题拆分成多个小规模的相同子问题,一般可用递归解决。
经典问题:斐波那契数列、归并排序、快速排序、矩阵乘法、二分搜索、大整数乘法、汉诺塔

回潮法特征:系统的搜索一个问题的所有解或任一解。
经典问题:N皇后问题、迷宫、背包问题

动态规划法(用于求最优解):划分子问题,并把子问题结果使用数组/散列表存储,利用查询子问题结果构造最终问题
经典问题:斐波那契数列、矩阵乘法、背包问题、LCS最长公共子序列

贪心法(用于求满意解】特征:局部最优,但整体不见得最优。每步有明确的,既定的策略。
经典问题:背包问题、多机调度、找零钱问题

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

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

相关文章

让IP实现https访问的方法

IP SSL证书是主要保护公网ip地址的一种专属信任SSL证书&#xff0c;相比而言IP SSL证书体现的定位很明确。 IP SSL证书是一种数字证书&#xff0c;用于保护网络服务器和网络浏览器之间的通信。它是由受信任的证书颁发机构(CA)颁发的安全套接字层(SSL)证书。证书用于验证服务器…

day 26网络编程—协议

1、协议&#xff1a;通信双方约定的一套标准 2、国际网络通信协议标准&#xff1a; 1.OSI协议&#xff1a; 应用层 发送的数据内容 表示层 数据是否加密 会话层 是否建立会话连接 传输层 数据传输的…

丑数的计算

丑数 就是只包含质因数 2、3 和 5 的正整数。 给你一个整数 n &#xff0c;请你判断 n 是否为 丑数 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;n 6 输出&#xff1a;true 解释&#xff1a;6 2 3 示…

Linux---DHCP和FTP(原理+实操)

文章目录 DHCP和FTP&#xff08;原理实操&#xff09;DHCP使用DHCP&#xff08;自动分配IP&#xff09;的好处分配方式租约过程第一次重新登录更新租约DHCP服务可分配的地址信息主要包括 DHCP安装和配置实验目的实验环境:网络环境:系统环境:具体操作实操注意一、将三台虚拟机网…

数据结构——排序(4):归并排序+计数排序

目录 一、归并排序 &#xff08;1&#xff09;思想 &#xff08;2&#xff09;过程图示 &#xff08;3&#xff09;代码实现 (4) 代码解释 &#xff08;5&#xff09;复杂度 二、非比较排序&#xff08;计数排序&#xff09; &#xff08;1&#xff09;操作步骤 &#x…

《新一代数据可视化分析工具应用指南》正式开放下载

2024年8月12日&#xff0c;由DataEase开源项目组编写的《新一代数据可视化分析工具应用指南》白皮书正式面向广大用户开放下载。 《新一代数据可视化分析工具应用指南》是DataEase开源项目组为了支持企业落地并推广BI工具、推进企业数据可视化建设而编著的指导手册。通过本白皮…

【生成式人工智能-十二-影像生成原理】

文字生成影像的原理 影像生成的应用影像 是怎么生成的图片生成图片&#xff1a;影像生成影像文字生成图片按照文字AT的方式生成NAT 文字生成视频 怎么评价影像生成的好坏引入CLIP模型文字生成图片的难点文字生成视频的难点解决办法减少attention数目分迭代生成 前段时间sora生成…

前端字体没有授权,字体版权检测(是否为方正字体)

1.截图系统中的首页和登录页面&#xff0c;主要是有字体的地方 2.在线字体版权检测地址&#xff1a;字体版权自动检测-求字体网 3.上传照片&#xff0c;开始对图片进行检测&#xff0c;每个账号有三次免费次数 4.检测完&#xff0c;直接查看检测报告即可&#xff0c; 报告中…

[Spring] Spring事务与事务的传播

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

借助 Aspose.Words,在 Word 文档中创建表格

Word 文档中的表格是一种强大的工具&#xff0c;可用于以清晰、结构化的格式组织和呈现数据。表格由行和列组成&#xff0c;行和列相交形成可包含文本、数字、图像或其他元素的单元格。在本文中&#xff0c;我们将学习如何使用 C# 以编程方式在 Word 文档中创建表格。本文通过代…

虚幻5|高级运动实现基础的翻滚Roll 基础篇

一&#xff0c;调整项目设置——输入 1.我设置了翻滚是同时按W&#xff0b;Shift按键&#xff0c;如果你有更好的按键安排&#xff0c;评论区留言 二&#xff0c;打开角色蓝图&#xff0c;打开图表—基础移动&#xff08;你的放图表就行了&#xff0c;我这里是安排了很多排版的…

LDRA Testbed(TBrun)软件单元测试_实例讲解(局部静态变量)

系列文章目录 LDRA Testbed软件静态分析_操作指南 LDRA Testbed软件静态分析_自动提取静态分析数据生成文档 LDRA Testbed软件静态分析_Jenkins持续集成&#xff08;自动静态分析并用邮件自动发送分析结果&#xff09; LDRA Testbed软件静态分析_软件质量度量 LDRA Testbed软件…

使用Hugging Face构建大型语言模型应用

在本文中&#xff0c;我们将介绍如何使用Hugging Face的大型语言模型&#xff08;LLM&#xff09;构建一些常见的应用&#xff0c;包括摘要&#xff08;Summarization&#xff09;、情感分析&#xff08;Sentiment analysis&#xff09;、翻译&#xff08;Translation&#xff…

初步融合snowboy+pyttsx3+espeak+sherpa-ncnn的python代码

在前文《将Snowboy语音唤醒的“叮”一声改成自定义语言》中&#xff0c;我已经实现唤醒snowboy后&#xff0c;树莓派会说一句自定义文本。今天&#xff0c;会在此基础上增加ASR的应用&#xff08;基于sherpa-ncnn&#xff09;。 首先&#xff0c;编写一个asr.py的程序&#xf…

手撕快排——三种实现方法(附动图及源码)

&#x1f916;&#x1f4bb;&#x1f468;‍&#x1f4bb;&#x1f469;‍&#x1f4bb;&#x1f31f;&#x1f680; &#x1f916;&#x1f31f; 欢迎降临张有志的未来科技实验室&#x1f916;&#x1f31f; 专栏&#xff1a;数据结构 &#x1f468;‍&#x1f4bb;&…

【C++】STL——list

前言 本篇博客我们接着来理解一个STL库里的list链表的结构&#xff0c;根据前面数据结构的铺垫&#xff0c;理解这个结构相对比较容易。我们来一起看看吧 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;C 若有问题 评论区见&#x1f4dd; &#x1f38…

中国与中南半岛国家多国语言系统开发i18n配置老挝、柬埔寨语言配置

前言 当下中国与中南半岛国家经济合作密切&#xff0c;同时也需要软件系统&#xff0c;多国使用系统需要实现多语言&#xff0c;我们团队最近也接到一个中、老、柬三国的业务软件&#xff0c;需要将软件做成三个国家语言。然后我们网上收i18n的老、柬的语言包命名&#xff0c;…

计算机毕业设计 美妆神域网站 美妆商城系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

j2:基于pytorch的resnet实验:鸟类分类

基于pytorch的resnet实验&#xff1a;鸟类分类 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 Ⅰ Ⅰ Ⅰ Introduction&#xff1a; 本文为机器学习使用resnet实现鸟类图片分类的实验&#xff0c;素材来自网…

跟李沐学AI:目标检测的常用算法

区域神经网络R-CNN 使用启发式搜索算法来选择锚框 -> 使用预训练模型来对每个锚框抽取特征 -> 训练一个SVM对类别进行分类 -> 训练一个线性回归模型来预测边缘框偏移 锚框大小不一&#xff0c;如何将不同的锚框统一为一个batch? -> 兴趣区域池化层 兴趣区域(RoI…