我的算法学习笔记_(1)

前言

这是我的一个算法学习笔记。。。。。

写在前面:

最近一直学算法,,,一直看学习视频,一直看,一直看,但是看的多了,,手并没有跟上,所以,因为我又懒的写代码,去思考,就想了这么一个懒的办法,通过写笔记,来巩固一下以前学过的知识。

本笔记应该会一直不断的更新,,然后慢慢的趋于不错的地步,希望自己可以好好的坚持写下去吧!

一、什么是算法?

这个问题,,看了好多遍,算法,是程序的核心,是一种解决问题的的方法,好的算法解决问题可以更快。。。

引例 求0-N范围内的素数

解法 1

    for (i=2;i<N;i++)
    {temp=1;
    for (j=2;j<i;j++)
    {
        if(i % j ==0)temp=0;
    }
    if(temp!=0)printf("%d ",i);
    if (i%10==0)printf("\n");
    }

在解法一中,我们通过俩层遍历的办法,来找到了素数,但是,我们可以把第一行代码进行改进:

解法2

    for (i=2;i<N;i++)
    {temp=1;
    for (j=2;j<sqrt(i);j++)
    {
        if(i % j ==0)temp=0;
    }
    if(temp!=0)printf("%d ",i);
    if (i%10==0)printf("\n");
    }

注意在解法2中我们把第二层循环中的i 改为了**sqrt(i)**这样我们就可以减少循环的次数。。。

解法3

在这里,,就不在举代码的例子说明。。只介绍一下思路
首先建立一个数组,用来存储你要判断某个范围内自然数全赋初值0,代表假设数组中每一个数都是素数,然后,开始从2开始循环遍历每一个元素。在第一次遍历中,把2 * n的每一个元素赋值为1,因为他们一定不是素数,第二次遍历,把3*n的每一个元素赋值为1。。。。。如此重复,剩下的值仍为0的值就是我们要找的 素数。

引例就是要表明算法的目的就是去找到一种最好的方法去解决你要面临中的问题

在我的算法学习过程中,我觉得算法中比较核心的思想就是把一个问题分为小问题,然后再通过解决小问题,来最终实现整个的大问题。。

关于该笔记的编写顺序

第一步,先把每一个算法的核心给编写出来,写一个小小的引例。
第二步,补充多个,例题在每一个算法的后面,最好可以写多个题,来进行比较。
第三步,补充一个自己想的,或者已存在的小项目,然后用算法的思想进行补充填写。
第四步,计算补充算法的复杂度。。。
接下来,就开始算法的学习吧!
2019年4月30日 21:45:37
下一篇:我的算法学习笔记(2)枚举法1

猜你喜欢

转载自blog.csdn.net/qq_33950926/article/details/89716085
今日推荐