什么是算法

算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。

mark:我们可以把所有的算法想象为一本“菜谱”,特定的算法比如菜谱中的的一道“老醋花生米”的制作流程,只要按照菜谱的要求制作老醋花生米,那么谁都可以做出一道好吃的老醋花生米。so,这个做菜的步骤就可以理解为:“解决问题的步骤”

2、算法的意义

假设计算机无限快,并且计算机存储容器是免费的,我们还需要各种乱七八糟的算法吗?如果计算机无限快,那么对于某一个问题来说,任何一个都可以解决他的正确方法都可以的!

当然,计算机可以做到很快,但是不能做到无限快,存储也可以很便宜但是不能做到免费。

那么问题就来了效率:解决同一个问题的各种不同算法的效率常常相差非常大,这种效率上的差距的影响往往比硬件和软件方面的差距还要大。

3、如何选择算法

第一首先要保证算法的正确性

Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)

1、O(1)

2、O(n2)

n=100foriinrange(n):#执行了n次forqinrange(n):#执行了n2print(q)#执行了n2解:T(n)=2n2+n+1=O(n2)

3、O(n)

4、Ο(n3)

#O(n3)n=100foriinrange(n):#执行了n次forqinrange(n):#执行了n^2foreinrange(n):#执行了n^3print(e)#执行了n^3简单点来去最大值是:Ο(n3)

B是真数(0-9)

R是基数(个十百)

排序算法是在更复杂的算法中的是一个构建基础,所以先看下常用的排序。

1、冒泡排序

需求:

请按照从小到大对列表,进行排序==》:[69,471,106,66,149,983,160,57,792,489,764,589,909,535,972,188,866,56,243,619]

思路:相邻两个值进行比较,将较大的值放在右侧,依次比较!

原理图:

原理分析:

列表中有5个元素两两进行比较,如果左边的值比右边的值大,就用中间值进行循环替换!既然这样,我们还可以用一个循环把上面的循环进行在次循环,用表达式构造出内部循环!

代码实现:

2、选择排序

思路:

第一次,从列表最左边开始元素为array[0],往右循环,从右边元素中找到小于array[0]的元素进行交换,直到右边循环完之后。

第二次,左边第一个元素现在是最小的了,就从array[1],和剩下的array[1:-1]内进行对比,依次进行对比!

对比:

他和冒泡排序的区别就是,冒泡排序是相邻的两两做对比,但是选择排序是左侧的“对比元素”和右侧的列表内值做对比!

一个列表默认分为左侧为排序好的,我们拿第一个元素举例,他左边的全是排序好的,他右侧是没有排序好的,如果右侧的元素小于左侧排序好的列表的元素就把他插入到合适的位置

排序示例:

假设用户输入了如下数组:

i=0j=3k=6

i=2j=3k=6

如果i和j没有碰头的话,就递加i找大的,还没有,就再递减j找小的,如此反复,不断循环。注意判断和寻找是同时进行的。

THE END
1.算法的概念及其特征但其实啊,算法没那么玄乎,它就在咱们的生活里到处蹦跶呢! 您想想,咱每天早上起床,先刷牙洗脸,再穿衣服出门,这一系列的步骤,不就是一种简单的“算法”吗?只不过咱们没把它叫得那么专业罢了。 那到底啥是算法呢?简单说,算法就是解决问题的一系列明确步骤。就好比您要做一道红烧肉,得先准备食材,切好肉,炒糖色https://wenku.baidu.com/view/b6df04096adc5022aaea998fcc22bcd126ff428e.html
2.什么是算法?没有输出的算法是毫无意义的;5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。 0 0 0 九州编程 一、什么是算法算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,https://m.imooc.com/mip/wenda/detail/509729
3.什么是算法?算法的发展历程?特征?什么是复杂度?算法的产生一、什么是算法? ? 官方的概念呢,算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 //我自身的理解呢,就是能够让我们编写程序代码更简洁,能够提升算法的运行效率。 二、算法的发展历程 算法的发展历程可以追溯到古代的数学和逻辑研究,随着计算机科学的发https://blog.csdn.net/weixin_67739446/article/details/141789238
4.一文看懂人工智能里的算法(4个特征+3个算法选择Tips)人工智能有三驾马车:数据、算法、算力。本文重点介绍算法相关的知识。 本文将介绍算法在人工智能里的概念,算法的4个特征、6个通用方法。以及在选择算法时需要注意的3个点。 什么是算法? 简单的说,算法就是:解决问题的手段,并且是批量化解决问题的手段。 https://easyai.tech/ai-definition/algorithm/
5.什么是算法?——算法轻松入门Ribbon什么是算法? 算法是利用计算机解决问题的处理步骤,简而言之,算法就是解决问题的步骤。 算法不仅仅用于计算机的数据处理,现实世界中的各种问题也需要结合算法的概念来解决,其中,具有代表性的就是烹饪中用到的食谱,食谱是各种美味料理的制作方法,需要用一定的步骤表示出来。 https://www.cnblogs.com/Ribbon/p/4519392.html
6.算法是指什么?算法概述算法是指什么?算法概述 描述 一、算法概述 算法是指解题方案的准确而完整的描述,是一系列解决问题、高度符合逻辑性、可执行性的指令集合,代表运用系统方法描述解决问题的策略机制。算法能够对一定规范的输入在有限时间内运行得到输出。 算法中的指令描述的是计算过程,当其运行时能从初始状态和初始输入(初始输入可能为https://m.elecfans.com/article/2008707.html
7.什么是算法我们说过算法与计算机无关,但现在绝大多数人把它们联系在一起。当算法与计算机结合在一起时,算法展现出其潜力,这是事实,但计算机实际上是一个特殊的机器,可命令它做一些确定的事物。我们通过编程(programming)来命令它,通过用编程来执行算法。 引自 算法、计算机和数学12 https://book.douban.com/annotation/137133352/
8.什么是密码算法?马在旅途:什么是密码算法? 回复:密码算法是实现密码对信息进行“明”“密”变换的一种特定的规则。不同的密码算法有不同的变换规则。因此,密码算法也是加密算法、解密算法、签名算法和认证算法等各类算法的统称。 密码算法对密码系统的安全性有着至关重要的意义。衡量密码算法的优劣采用的是密码强度的概念。密码强度https://www.oscca.gov.cn/sca/hdjl/2016-11/18/content_1002847.shtml
9.什么是哈希算法?常见的哈希算法有哪些?区块链技术区块链这篇文章主要介绍了什么是哈希算法?常见的哈希算法有哪些?的相关资料,需要的朋友可以参考下本文详细内容介绍 哈希算法是一种数学函数或者算法,它可以将任意长度的数据(称为“消息”)转换为固定长度的字符串(称为“哈希值”或者简称“哈希”)。哈希算法的作用是将数据进行一次性的加密,从而生成一个唯一且不可逆的标识https://www.jb51.net/blockchain/891421.html
10.什么是算理和算法在计算教学中,算理与算法是两个不可或缺的关键。算理是对算法的解释,是理解算法的前提,算法是对算理的总结与提炼,它们是相互联系,有机统一的整体。透彻理解算理和熟练掌握算法是提高学生计算能力的重要保证。那么什么叫做算理和算法呢?算理:即计算的原理或者道理,它有两层含义:一是列式的依据,即某一问题为什么要用https://www.unjs.com/xuexi/jiaoyuwenzhai/20111016201853_703871.html
11.什么是机器学习算法?IBM机器学习算法是 AI 系统用来执行任务的一套规则或流程,最常见的用途是发现新的数据洞察或模式,或者从一组给定输入变量中预测输出值。机器学习 (ML) 利用算法来学习。 行业分析师一致认同机器学习及其底层算法至关重要。Forrester 指出:“机器学习算法的进步让营销数据的分析更加精确深入,可帮助营销人员了解营销细节(如https://www.ibm.com/cn-zh/topics/machine-learning-algorithms
12.Vue中的diff算法是什么?什么是diff算法diff算法是指用于比较虚拟什么是diff算法 diff算法是指用于比较虚拟DOM新旧节点之间的变化,找出新旧节点之间的差异,以达到最小化更新视图,提高渲染性能的一种算法。 这个算法有两个基本特点: 比较只会在同层级进行,不会跨层比较。 在diff比较过程中,是从节点的两端向中间比较。 https://juejin.cn/post/7171076476933472293
13.深入理解JVM垃圾回收算法腾讯云开发者社区这一期讲述垃圾回收的算法。我们根据分代的理念讲述一下JVM是使用什么算法对于不同分代的对象进行垃圾回收的的,同样内容十分基础,但是对于学习JVM后续的内容十分重要。 前文回顾 在上一节当中,我们看到了JVM当中堆将分为新生代和老年代,对象优先在新生代分配,以及新生代在长期存活并且满足条件之后进入老年代,介绍了新https://cloud.tencent.com/developer/article/1862200
14.练习——简答题51CTO博客(4)证明算法正确性 (5)算法分析 各步骤之间存在循环和反复过程。 4.什么是算法复杂性?它主要有哪两个方面构成? 答:算法复杂性是算法运行时所需要的计算机资源的量,它包括两个方面:时间复杂性(需要时间资源的量)和空间复杂性(需要空间资源的量) 。 https://blog.51cto.com/u_15127603/3567921
15.线上读书会算法困局——我们都会被困在系统里吗?曹文轩主讲人作去年,《人物》杂志刷屏的那篇《外卖骑手,困在系统里》,将高危职业外卖员的困境带到我们面前,也让我们第一次真正摸清楚背后的始作俑者,也就是“算法系统”。前几天,又一篇北大博士的外卖骑手研究引起了广泛讨论,再一次呈现了算法系统对人的压迫,以及背后的资本对人的异化。那么,算法系统到底是什么?本该服务人的https://www.163.com/dy/article/GAH22JU60514R9P4.html