数据结构与算法——算法(数据结构算法的概念)

数据结构与算法——算法输入——一个算法有零个或多个输入,这些输入取自与某个特定的对象的集合输出——一个算法有一个或多个的输出,这些输出是同输入有着某些特定关系的量 🚀算法的设计(要点

输入—— 算法具有从与特定对象相关的集合中获取的零个或多个输入。 输出—— 一种算法具有一个或多个输出,这些输出是与输入具有某种特定关系的量。

算法的设计(要点)

一个好的算法通常具有以下要求:

1.准确性,算法必须能够正确地解决求解问题。

2. 可读性:算法主要是由人类阅读和交流,然后由机器执行。高可读性有助于您理解算法,但晦涩的程序往往会隐藏更多错误,并且更难以调试和修改。

3. 鲁棒性:如果输入格式错误,算法可以对其做出适当的响应或处理,而不会产生令人费解的输出结果。

4、效率高、存储要求低效率是指当多种算法可以解决同一问题时,执行时间较短的算法效率更高。存储需求是指算法执行过程中所需的最大存储容量。效率和较低的存储要求都取决于问题的规模

注意:算法可以用伪代码编写。

算法效率的度量

算法的执行时间应该用基于该算法编译的程序在计算机上运行所需的时间来衡量。通常有两种方法来测量程序执行时间:

事后统计法

许多计算机都具有内部计时能力,其中一些具有毫秒级的精度,可以通过一个或多个相同的统计数据来区分好程序和坏程序。一是基于算法编译出来的程序必须先运行,二是获得的时间统计取决于计算机硬件和软件等环境因素,这意味着其自身的优缺点很容易被掩盖。

事前分析估算法

用高级编程语言编写的程序在计算机上运行所需的时间取决于以下因素:

您为算法选择的策略根据问题大小编写程序所使用的语言级别越高,实现语言的级别越高,生成的机器代码的质量越低。执行已编译程序和指令的机器的速度。

因此,用不同的语言实现同一个算法,用不同的编译器编译,或者在不同的计算机上运行都会有不同的效率。

算法由控制结构(序列、分支和循环)和独特的操作(对独特数据类型的操作)组成,算法时间由这两者的综合影响决定。为了便于对同一问题的不同算法进行比较,可以从一个算法(或算法类型)中选择一个唯一的操作,该操作是所研究问题的基本操作,并且使用基本操作的数量是常见的。方法。该算法每次都会重复其操作。

时间复杂度

一般来说,算法的基本操作重复的次数是问题大小为n 的函数f(n),算法的时间测量记录为:

T ( n )=O ( f ( n ) ) T(n)=O(f(n)) T(n)=O(f(n))

这意味着随着问题规模n 的增加,算法的执行时间以与f(n) 相同的速率增加。这称为算法的渐近时间复杂度(简称时间复杂度)。

因此,元操作,称为问题的基本操作,必须是迭代次数与算法执行时间成正比的原始操作,并且大多数情况下是最深循环内语句中的原始操作。它的执行频率与包含的语句一样频繁。

注:语句频率是指一条语句重复执行的次数。

根据输入数据的特点,时间复杂度分为三种情况:最差、平均和最佳。一般来说,最坏的时间复杂度包含在最好、平均、一般情况下。两种情况。

普通型:

从大到小规模,常见算法的时间复杂度主要包括:

O ( 1 ) O (log 2 n ) O ( n ) O ( n log 2 n ) O ( n ) O ( n 3 ) O ( 2 ) O ( n ! ) O ( n ) O(1)O (log2n)O(n)O(nlog2n)O(n)O(n3)O(2)O(n!)O(n) O(1)O(log2n)O(n)O(nlog2n)O( n)O(n)O(2)O(n!)O(n)

示例1:

无效扬声器(int n){

整数i=1;

而(i=n){

i=i* 2 //每次都加倍。

printf(\’非常感谢%d\\n\’, i);

}

printf(\’我真的问%d\\n\’, n);

}

时间复杂度:

T ( n )=O ( x )=O ( log 2 n ) T(n)=O(x)=O(log 2n) T(n)=O(x)=O(log 2n)

示例2:

voidpeaker(int flag[], int n){ //n是问题的大小

printf(\’今天过得怎么样?\\n\’);

for(int i=0; in; i++){ //从第一个元素开始查找

if(flag[i]==n){ //查找元素n

printf(\’我很好%d\\n\’, n);

休息;

}

}

}

//标志数组存储从1到n的数字,没有特定的顺序。

int 标志[n]={1.n};

发言者(标志,n)

时间复杂度:

最好情况:元素n 位于第一个位置(T(n)=O(1)) 最坏情况:元素n 位于最后位置(T(n)=O(n)) 平均情况:假设元素n 如下任何位置的概率都等于1/n (T(n)=O(n))

算法的时间复杂度只考虑问题规模n的增长率,因此如果很难准确计算基本操作的执行次数(或语句的频率),可以简单地求增长率或阶数。马苏。名词

空间复杂度

除了算法的时间复杂度之外,我们还需要知道算法的空间复杂度。 n 是问题的规模(或大小)。

S ( n )=O ( f ( n ) ) S(n)=O(f(n)) S(n)=O(f(n))

与空间复杂度相关的空间类型有:

输入空间:存储输入数据所需的空间量;临时存储空间:存储算法执行过程中所有中间变量、对象和其他数据所需的空间量。当算法返回大小时。

总结

以上是数据结构和算法方面的一些算法理论知识。算法的时间和空间复杂度是确定程序设计对于未来数据结构和数据操作是否高效合理的一种方式。必须考虑算法的时间和空间复杂度。

题外话

许多初次进入计算机行业或计算机相关专业大学毕业的人由于缺乏工作经验而很难找到工作。让我们看两个数据集。

预计2023年全国大学毕业生将达到1158万人,就业形势严峻,从333.6万到3万人不等。这表明,虽然国内Python人才缺口高达40万人,但人工智能人才缺口目前已超过500万人。

大数据时代,想要走在潮流前沿,就必须学习前沿有用的知识。人工智能和数据分析目前呈爆炸式增长,Python 也越来越受欢迎。正确学习Python将帮助你找到一份工作或找到一份副业。

全球知名的TIOBE编程语言社区公布了2023年最新的编程语言排名。我们一起来看看

目前来学习的人分为以下几类:

第一类:初入编程行业:大学刚毕业或转行其他行业,目前对Python感兴趣,想从事编程开发的人。非常适合初学者入门。

第二类:Linux系统运维人员:虽然Linux运维是出了名的复杂,但是他们获取系统知识的能力非常高,可以使用Python来解决自动化问题。 Python开发和运维人员薪资普遍高于Linux运维人员。

第三类:进行数据分析或人工智能:人工智能的一些常见应用也使用Python技术,无论是一般的大数据分析、一般的财务分析,还是科学分析。

第四类:当前程序员转向Python开发:程序员通常只关注div+css等页面技术,并且往往需要与后端开发人员进行实际交互。它们都用Python代码覆盖,它的优雅和开发效率给我留下了深刻的印象。

第五类:其他:过去做过大量SEO优化的工程师,由于缺乏编程知识,无法解决一些程序问题,只能做简单的页面优化。现在您已经学习了Python,您将能够编写程序来解决困难的SEO 问题,例如查询嵌入、排名和自动生成网络地图,就像我一样。

当然,我们只是总结了一些与职业和职位相关的常见情况。

Python的优点:

易学:简单易学,对初学者非常友好。免费和开源:Python 中的所有内容都是免费和开源的,这意味着Python 可以免费使用,无需花费一毛钱,您可以自由分发此软件的副本,阅读或修改其源代码,可以添加或使用部分内容。它的。对于新的免费软件。可扩展:Python可以用Python本身编写,也可以与C、Java和其他语言结合编写。

对于没有基础的初学者:

如果你是初学者并且想快速入门Python,可以考虑一下。

另一方面,学习时间相对较短,学习内容更加全面和深入。

其次,你可以找到适合自己的学习计划。

我从事开发多年,自学了许多编程语言。我们也了解学习资源对于学习新语言的重要性。对我来说,这些真的很重要。它不再需要了,但对于那些准备自学Python的人来说,它可能是一个宝藏,可以节省你大量的时间和精力。

不要盲目上网学习。我们最近更新了一些资源。只要你是我的粉丝,请利用这个问题。

首先,我会在文章最后介绍如何使用这些以及如何将它们带回家。

(一)Python全方位学习路线(新版)

我花了几天时间整理了Python各个方向的技术点,总结了不同领域的知识点。它的方便之处在于你可以根据以上知识点找到相应的学习资源来学习更多内容。总体来说是我自己。

我们最近更新了这些路线,使我们的知识体系更加全面。

(2)Python学习视频

它包含100 多个学习视频,可帮助您开始使用Python、爬虫、数据分析和Web 开发,但一旦您学会了它们,就可以探索其他学习路线。利用在线知识资源取得进步。

(3) 100多个练习项目

通过观看视频学习时,理解并运用它们,而不是仅仅动动眼睛和头部而不动动手,是更科学的学习方法。水平也不平等。每个人都可以选择一个自己能做的项目并付诸实践。

(4) 200多本电子书

多年来我收集了大约200 多本电子书。如果不方便携带实体书,可以打开电子书查看内容。书籍并不一定不如视频教程。尤其是权威的技术书籍。

基本上主流的和经典的都有,但是由于版权问题,这里就不贴照片了。只要你个人看就没有问题。

(五)Python知识总结

知识点摘要与学习路线类似,但与学习路线的区别在于,知识点摘要更加详细,包含对特定知识点的简要描述,而学习路线则更加具体、抽象和简单。对于每个人来说,了解在特定领域要学习哪些技术堆栈都是有用的。

(六)其他信息

我还发布了其他图解教程来帮助您开始使用Python。即使没有电脑,也可以在手机上学习知识。学习完理论后,您可以实际编码并测试它。我们还有中文版Python、MySQL、HTML标签合集等图书馆资料,都可以赠送给粉丝。

这些并不是很有价值,但是对于没有资源或者资源不是很好的学习者来说非常有用。关注我的人都可以把这些带回家。知道了。

以上关于#数据结构与算法——算法相关内容摘自网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92166.html

Like (0)
CSDN的头像CSDN
Previous 2024年6月25日
Next 2024年6月25日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注