算法1——算法简介

一、算法的简介

        对于程序来说,程序=算法+数据结构,对于程序猿来说,想要写出比较完美的程序,算法和数据结构是必须要掌握的,学习算法之前,我们应该熟悉掌握基本的数据结构,如果是零基础的话也没有关系,接下来的文章里面,我也会讲一下啦,所以宝子们不要担心!

 1.1 常见的数据结构

        

二、 算法的性能方面

2.1 算法举例--二分查找

比如猜大小游戏;假设被猜的数据是73;使用简单查找的话,需要查找73次。

1 ... 49 50 51 52 53 ... 100

第一轮:猜想:50——————》小了

第二轮:猜想:75——————》大了

第三轮:猜想:63——————》小了

第四轮:猜想:69——————》小了

第五轮:猜想:72——————》小了

第六轮:猜想:73——————》猜中了!

 很明显,查找次数少了很对次。

扫描二维码关注公众号,回复: 17140449 查看本文章

在实现的过程中个,我们需要有两个指针来实现Low和High;

第一轮:

第二轮:

第三轮:

当目标值大于mid索引的值时,我们选择将low指针右移,即:low=mid+1;

当目标值大于mid索引的值时,我们选择将high指针左移,即:high=mid-1;

        即每次都一半一半的缩小查找范围。

        使用它可节省多少时间呢?简单查找逐个地检查数字,如果列表包含100个数字,最多需要猜100次。如果列表包含40亿个数字,最多需要猜40亿次。换言之,最多需要猜测的次数与列表长度相同,这被称为线性时间(linear time )。
        二分查找则不同。如果列表包含100个元素,最多要猜7次;如果列表包含40亿个数字,最多需猜32次。厉害吧?二分查找的运行时间为对数时间(或log时间 )。

2.2 大O表示法

大O表示法是一种特殊的表示法,指出了算法的速度有多快。

除最糟情况下的运行时间外,还应考虑平均情况的运行时间;
下面按从快到慢的顺序列出了你经常会遇到的5种大O运行时间。
O(log n),也叫对数时间,这样的算法包括二分查找。

 O(n),也叫线性时间,这样的算法包括简单查找。

O(n^{2}):如选择排序--一种速度较慢的排序算法。

O(n* log n):如快速排序

O(n!):如旅行商问题的解决方案

        假设你要绘制一个包含16格的网格,且有5种不同的算法可供选择,这些算法的运行时间如上所示。如果你选择第一种算法,绘制该网格所需的操作数将为4(1og 16=4)。假设你每秒可行10次操作,那么绘制该网格需要0.4秒。如果要绘制一个包含1024格的网格呢?这需要执行10(log 1024 =10)次操作,换言之,绘制这样的网格需要1秒。这是使用第一种算法的情况。
        第二种算法更慢,其运行时间为O(n)。即要绘制16个格子,需要执行16次操作;要绘制1024个格子,需要执行1024次操作。执行这些操作需要多少秒呢?

如果对你有用的话,点个关注或赞呗!

猜你喜欢

转载自blog.csdn.net/qq_45672041/article/details/134541711
今日推荐