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

数据结构——Makefile、算法、排序(2025.2.13)

目录

一、Makefile

1.功能

2.基本语法和相关操作

(1)创建Makefile文件

(2)编译规则

(3)编译

(4)变量

        ①系统变量

        ②自定义变量

二、 算法

1.定义

2.算法的设计

(1)正确性

(2)可读性

(3)健壮性

(4)高效率

(5)低存储

三、练习

1.排序算法

(1)冒泡排序

(2)选择排序

(3)插入排序

(4)快速排序

(5)希尔排序

(6)二分查找


一、Makefile


1.功能

        管理工程代码的编译和链接,可一键化实现代码工程的编译和管理。

        时间戳:根据时间戳,可以只编译发生修改后的文件

2.基本语法和相关操作

(1)创建Makefile文件

         vi Makefile 或 vi makefile

(2)编译规则

        目标文件:依赖的源文件(多个源文件可以通过空格隔开)
                   编译方法

          编译方法:
          -I : 指定头文件存放位置
          -L :   指定库存放的位置
          例:gcc main.c queue.c tree.c -o app -g -lm -I../include  -L../lib

(3)编译

         make : 执行Makefile,进行编译源码
         make  clean  : 删除可执行程序,二进制文件

(4)变量

         ①系统变量

                $@:  代表目标文件
                $^:   代表所有依赖文件
                $<:   代表第一个依赖文件

        ②自定义变量

                变量名=值
                  +=           在原来变量内容的基础上增加
                   :=           在原来的基础上覆盖       

                 变量引用:使用变量中的内容
                 $(变量名)

二、 算法


1.定义

        程序 = 数据结构 + 算法

        算法:解决特定问题的求解步骤

2.算法的设计

(1)正确性

        语法正确
        合法的输入能得到合理的结果
        对非法的输入,给出满足要求的规格说明
        对精心选择,甚至刁难的测试都能正常运行,结果正确

(2)可读性

         便于交流,阅读,理解    高内聚 低耦合

(3)健壮性

         输入非法数据,能进行相应的处理,而不是产生异常

(4)高效率

         时间复杂度需尽可能更低

(5)低存储

         空间复杂度需尽可能更低

  • 算法时间复杂度

        即执行这个算法所花时间的度量
        
        将数据量增长和时间增长用函数表示出来,这个函数就叫做时间复杂度。

        一般用大O表示法:O(n)----->时间复杂度是关于数据n的一个函数
        随着n的增加,时间复杂度增长较慢的算法时间复杂度低

  • 时间复杂度的计算规则

        ①用常数1 取代运行时间中的所有加法常数
        ②在修改后的运行函数中,只保留最高阶项。
        ③如果最高阶存在且系数不是1,则去除这个项相乘的常数。

三、练习


1.排序算法

        ①思想
        ②代码
        ③时间复杂度
        ④排序算法的稳定性:对于两个相同的数据,经过排序,两个相同数据的相对位置没有发生变化,这就是一个稳定的排序算法。

(1)冒泡排序

                相邻两两比较,优先排好最大值

                时间复杂度:O(n^2)
                稳定性:稳定

(2)选择排序

                将待排位置的数据和后续的数据依次进行比较,将小的存放在待排位置,经过一趟,优先排好最小值。
                      for(int i = 0; i < len-1; i++)
                      {
                               for (int j = i+1,; j < len; j++)
                               {
                                           if (a[i] > a[j])
                                                 swap(a[i], a[j]);
                                  }
                     }
                    时间复杂度:O(n^2)
                    稳定性:不稳定

(3)插入排序

                 将待排的元素,依次插入到一个有序序列中,确保插入后任然有序。
                         for (int i = 1; i < len; i++)
                         {
                                 j = i;
                                 int temp = a[i];
                                 while (j > 0 && a[j-1] > temp)
                                {
                                        a[j] = a[j-1];
                                         --j;
                                }  
                                a[j] = temp;
                         }
                        时间复杂度:O(n^2)
                        稳定性:稳定


(4)快速排序

                选定基准值,从两头分别和基准值比较,比基准值大的向后,比基准值小的向前,优先排好基准值。
                      时间复杂度:O(nlogn)             
                      稳定性:不稳定

(5)希尔排序

                将待排的序列,按照增量分成若干个子系列,对子序列进行插入排序。

                       时间复杂度:O(nlogn)~O(n^2) 
                       稳定性:不稳定

(6)二分查找

                   前提:有序的序列
                   时间复杂度:O(logn)

相关文章:

数据结构——Makefile、算法、排序(2025.2.13)

目录 一、Makefile 1.功能 2.基本语法和相关操作 &#xff08;1&#xff09;创建Makefile文件 &#xff08;2&#xff09;编译规则 &#xff08;3&#xff09;编译 &#xff08;4&#xff09;变量 ①系统变量 ②自定义变量 二、 算法 1.定义 2.算法的设计 &#xff…...

算法之 跳跃游戏

文章目录 55.跳跃游戏思路参考&#xff1a;56.合并区间 55.跳跃游戏 55.跳跃游戏 灵神思路 思路分析&#xff1a; 两种思路&#xff0c;思路1是我们可以直接维护当前到达i的时候所能到达的最右的边界mr&#xff0c;如果i>mr就说明无法到达i,否则就是可以到达&#xff1b;…...

C#中的图形渲染模式

在C#中&#xff0c;图形模式通常用于定义如何渲染或处理图形。可以枚举定义如下四种图形模式&#xff1a;AUTO、GDI、DIB 和 FBO。这些模式可能用于指定不同的图形渲染技术或后端。下面是对这些模式的详细解释&#xff1a; 1. AUTO (自动模式) 含义&#xff1a;自动选择最适合…...

二.数据治理流程架构

1、数据治理流程架构核心思想&#xff1a; 该图描绘了一个以数据标准规范体系为核心&#xff0c;大数据生命周期管理为主线&#xff0c;数据资源中心为依托&#xff0c;并辅以数据质量管理和大数据安全与隐私管理的数据治理流程架构。它旨在通过规范化的流程和技术手段&#x…...

瑞萨RA-T系列芯片ADCGPT功能模块的配合使用

在马达或电源工程中&#xff0c;往往需要采集多路AD信号&#xff0c;且这些信号的优先级和采样时机不相同。本篇介绍在使用RA-T系列芯片建立马达或电源工程时&#xff0c;如何根据需求来设置主要功能模块ADC&GPT&#xff0c;包括采样通道打包和分组&#xff0c;GPT触发启动…...

扩散模型中的马尔可夫链设计演进:从DDPM到Stable Diffusion全解析

一、技术原理与数学推导&#xff08;附核心公式&#xff09; 1.1 扩散过程数学建模 马尔可夫链前向过程定义&#xff1a; q(x_{1:T}|x_0) \prod_{t1}^T q(x_t|x_{t-1})噪声调度函数&#xff08;以余弦调度为例&#xff09;&#xff1a; \beta_t \frac{1 - \cos(\pi t/T)}…...

通俗诠释 DeepSeek-V3 模型的 “671B” ,“37B”与 “128K”,用生活比喻帮你理解模型的秘密!

欢迎来到涛涛聊AI。 在DeepSeek-V3模型的参数描述中&#xff0c;你可能会看到类似“671B 37B 128K”这样的标记。这些字母和数字的组合看起来像密码&#xff0c;但其实它们揭示了模型的“大脑容量”和“工作方式”。我们用日常生活的比喻来解释&#xff1a; 一、数字含义&…...

大模型常识:什么是大模型/大语言模型/LLM

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 一、什么是语言模型? 那么什么是语言模…...

iOS 中使用 FFmpeg 进行音视频处理

在 iOS 中使用 FFmpeg 进行音视频处理,通常需要将 FFmpeg 的功能集成到项目中。由于 FFmpeg 是一个 C 库,直接在 iOS 中使用需要进行一些配置和封装。 1. 在 iOS 项目中集成 FFmpeg 方法 1:使用 FFmpeg 预编译库 下载 FFmpeg iOS 预编译库: 可以从以下项目中获取预编译的 …...

SAP-ABAP:SAP的Screen Layout Designer屏幕布局设计器详解及示例

在SAP中&#xff0c;Screen Layout Designer&#xff08;屏幕布局设计器&#xff09;是用于设计和维护屏幕&#xff08;Dynpro&#xff09;布局的工具。通过Screen Layout Designer&#xff0c;您可以创建和修改屏幕元素&#xff08;如输入字段、按钮、文本、表格控件等&#x…...

一.数据治理理论架构

1、数据治理核心思想&#xff1a; 数据治理理论架构图描绘了一个由顶层设计、管控机制、核心领域和管理系统四个主要部分组成的数据治理框架。它旨在通过系统化的方法&#xff0c;解决数据治理机制缺失引发的业务和技术问题&#xff0c;并最终提升企业的数据管理水平。 数据治…...

亲测有效!使用Ollama本地部署DeepSeekR1模型,指定目录安装并实现可视化聊天与接口调用

文章目录 一、引言二、准备工作&#xff08;Ollama 工具介绍与下载&#xff09;2.1 Ollama介绍2.2 Ollama安装 三、指定目录安装 DeepSeek R1四、Chatbox 可视化聊天搭建4.1 Chatbox下载安装4.2 关联 DeepSeek R1 与 Chatbox 的步骤 五、使用 Ollama 调用 DeepSeek 接口5.1 请求…...

MySQL安装MySQL服务时提示Install-Remove of the Service Denied

文章目录 问题描述排查1.字面意思2.搜索引擎3.官方文档4.源码 处理方法相关扩展 问题描述 MySQL安装MySQL服务时提示Install-Remove of the Service Denied! 详细报错如下&#xff1a; C:\Users\荷塘月色>net start mysql 服务名无效。请键入 NET HELPMSG 2185 以获得更多…...

(Windows | Linux)ssh访问服务器报错:no matching key exchange method found

问题现象 ssh user1192.168.1X.XX Unable to negotiate with 192.168.1X.XX port 22: no matching key exchange method found. Their offer: gss-group1-sha1-toWM5Slw5Ew8Mqkayal2g,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-…...

Linux(centos)系统安装部署MySQL8.0数据库(GLIBC版本)

安装前检查服务器glibc版本&#xff0c;下载对应版本包 rpm -qa | grep glibc mysql安装包及依赖包已整理好&#xff0c;下载地址&#xff1a;https://pan.quark.cn/s/3137acc814c0&#xff0c;下载即可安装 一、下载MySQL mysql安装包及依赖包已整理好&#xff0c;下载地址…...

有哪些滤波,原理是什么,分别在什么时候用

均值滤波&#xff08;Average Filtering&#xff09; 原理&#xff1a;通过计算像素点邻域内像素值的平均值来作为该像素点滤波后的新值。例如&#xff0c;对于一个 3x3 的邻域&#xff0c;将 9 个像素值相加然后除以 9 得到滤波后的像素值。优点&#xff1a;简单易实现&#x…...

深入解析与解决 Oracle 报错:ORA-29275 部分多字节字符20250213

&#x1f6e0;️ 深入解析与解决 Oracle 报错&#xff1a;ORA-29275 部分多字节字符 引言 &#x1f31f; 在与 Oracle 数据库打交道的日常工作中&#xff0c;你是否遇到过 ORA-29275: partial multibyte character 这个令人头疼的错误&#xff1f;这个错误通常与字符编码、数…...

iOS 上自定义编译 FFmpeg

在 iOS 上自定义编译 FFmpeg 是一个复杂但非常灵活的过程。通过自定义编译,您可以选择启用或禁用特定的功能和编解码器,以满足项目的需求,同时减少二进制文件的大小。 1. 自定义编译 FFmpeg 1.1 准备工作 在开始编译之前,您需要以下工具和环境: macOS:运行编译的主机。…...

linux-带宽性能压测-全解iperfwgetspeedtest-cli

【摘要】本文介绍了iperf&#xff0c;wget&#xff0c;speedtest-cli 测速linux 服务器带宽&#xff0c;测速方法&#xff0c;和测速分析结果都有详解。同时也附带了windows的带宽测速已经这些软件的下载。快来测试下您的网速 1.iperf: iperf是一个开源网络带宽测试工具&…...

【前端学习笔记】Webpack

1.介绍 Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具&#xff0c;它将 JavaScript、CSS、图片、字体等资源文件打包成一个或多个静态文件&#xff0c;以供浏览器使用。当 webpack 处理应用程序时&#xff0c;它会在内部从一个或多个入口点构建一个 依赖图(depend…...

SMUDebugTool深度解析:AMD Ryzen处理器底层调试与超频实战指南

SMUDebugTool深度解析&#xff1a;AMD Ryzen处理器底层调试与超频实战指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…...

题解:AcWing 6031 计算

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

告别NPOI!用EPPlus 7.0在.NET 8里优雅地读写Excel(附图片插入完整代码)

告别NPOI&#xff01;用EPPlus 7.0在.NET 8里优雅地读写Excel&#xff08;附图片插入完整代码&#xff09; 如果你还在使用NPOI处理Excel文件&#xff0c;现在是时候考虑升级到更现代的解决方案了。EPPlus 7.0作为.NET生态中最强大的Excel操作库之一&#xff0c;在.NET 8环境下…...

如何通过 curl 命令快速测试 Taotoken 的 API 连通性与响应

如何通过 curl 命令快速测试 Taotoken 的 API 连通性与响应 1. 准备工作 在开始测试之前&#xff0c;请确保您已经完成以下准备工作。首先登录 Taotoken 控制台&#xff0c;在「API 密钥」页面创建一个新的密钥并妥善保存。其次访问「模型广场」页面&#xff0c;记录您希望测…...

华为OD机试在家考,用自己电脑还是公司电脑?保姆级环境配置与避坑指南

华为OD机试环境配置全攻略&#xff1a;个人电脑与公司电脑的实战选择与避坑指南 当那封期待已久的华为OD机试邀请邮件终于出现在收件箱时&#xff0c;除了兴奋&#xff0c;更多涌上心头的是对考试环境的焦虑——究竟该用自己朝夕相处的个人电脑&#xff0c;还是公司配备的那台性…...

终极音乐地址解析实战指南:一键获取全网音乐播放链接

终极音乐地址解析实战指南&#xff1a;一键获取全网音乐播放链接 【免费下载链接】music-api Music API 项目地址: https://gitcode.com/gh_mirrors/mu/music-api 想要快速获取网易云音乐、QQ音乐、酷狗音乐、酷我音乐四大平台的歌曲播放地址吗&#xff1f;music-api项目…...

从Inception到U-Net:特征融合的‘加’与‘拼’如何塑造了不同的AI模型?

从Inception到U-Net&#xff1a;特征融合的‘加’与‘拼’如何塑造了不同的AI模型&#xff1f; 在深度学习的演进历程中&#xff0c;特征融合方式的差异往往决定了模型的性能边界。2014年&#xff0c;当GoogleNet团队首次在Inception模块中引入**通道拼接&#xff08;Concat&am…...

awesome-cdk安全实践:5个关键步骤保护你的云基础设施

awesome-cdk安全实践&#xff1a;5个关键步骤保护你的云基础设施 【免费下载链接】awesome-cdk A collection of awesome things related to the AWS Cloud Development Kit (CDK) 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-cdk AWS Cloud Development Kit …...

HTTP测试终极指南:如何用HttpBin构建完美的学术实验环境

HTTP测试终极指南&#xff1a;如何用HttpBin构建完美的学术实验环境 【免费下载链接】httpbin HTTP Request & Response Service, written in Python Flask. 项目地址: https://gitcode.com/gh_mirrors/ht/httpbin HttpBin是一个强大的HTTP请求与响应服务&#xff…...

工程应用:网格验证如何决定散热系统成败?

&#x1f393;作者简介&#xff1a;科技自媒体优质创作者 &#x1f310;个人主页&#xff1a;莱歌数字-CSDN博客 &#x1f48c;公众号&#xff1a;莱歌数字&#xff08;B站同名&#xff09; &#x1f4f1;个人微信&#xff1a;yanshanYH 211、985硕士&#xff0c;从业16年 从…...