自学算法喵喵喵吃西瓜

hi,少年。咱们来一起学习算法啦。这套课程特别适合自学算法的小白。每节课程最后还有一道练习题,边学边练,可以帮你及时巩固学习到的知识。

您也可以在该网站免费学习到更多课程

好,那我们正式开始!算法,可以简单理解为,完成一个任务的方法。你可以把它想象成食谱。要想做出一道菜肴,只需要按食谱的步骤一步步操作。

编程中的算法,就是用计算机解决一个问题的方法。食谱和算法的最大区别,在于算法是严密的,只要遵循步骤就一定能解决特定的问题;而食谱经常会有模糊描述的部分,不同厨师按照一个食谱做出来的菜可能口味天差地别。

算法也有优劣之分,如果让你在图书馆找到一本书算法一:在图书馆乱逛,随便抓起一本书看是不是要找的,如果不是,就再逛到另一个地方,随便抓起一本书算法二:从图书馆的第一排书架最顶层开始,从左到右,一本本地找。找完一层,再找下一层。如果整个书架找完了,就到下一个书架,再这样找。算法三:根据图书的索引编号,到图书馆的特定区域(如文学区、科技区),找到编号对应的书架、在哪一层,然后从左到右一本本找到。

代码实现

好,接下来我们做一道练习题,请移步到该网站的《算法基础简介》课程中,习题在内容最后。

说说冒泡排序(英语:Bubblesort),它是一种简单的排序算法。由于在算法的执行过程中,较小的元素像是气泡般慢慢「浮」到数列的顶端,故叫做冒泡排序。

如图所示是对无序表的第一次冒泡排序,最终将无序表中的最大值97找到并存储在表的最后一个位置,第一次冒泡结束;由于97已经判断为最大值,所以第二次冒泡排序时就需要找出除97之外的无序表中的最大值,比较过程和第一次完全相同。

经过第二次冒泡,最终找到了除97之外的又一个最大值76,比较过程完全一样,这里不再描述。通过一趟趟的比较,一个个的“最大值”被找到并移动到相应位置,直到检测到表中数据已经有序,或者比较次数等同于表中含有记录的个数,排序结束,这就是冒泡排序。具体实现代码为:

假设我们现在对“61279345108”这10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,这就是一个用来参照的数,待会儿你就知道它用来做啥了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下面这种排列:31254697108在初始状态下,数字6在序列的第1位。我们的目标是将6挪到序列中间的某个位置,假设这个位置是k。现在就需要寻找这个k,并且以第k位为分界点,左边的数都小干等于右边的数都大于等于6。

分别从初始序列“61279345108"两端开始“探测"、先从右往左我一个小于6的数,再从左往右找一个大干6的教,然后交换它们。这里可以用两个变量i和j,分别指向最左和最右边。具体的流程请参考:

现在基准数6已经归位,它正好处在序列的第6位。此时我们已经将原来的序列,以6为分界点拆分成了两个序列,左边的序列是“31254”,右边的序列是“97108”,接下来还需要分别处理这两个序列,因为6左边和右边的序列目前都还是很混乱的。不过不要紧,我们已经掌握了方法,接下来只要模拟刚才的方法分别处理6左边和右边的序列即可。现在先来处理6左边的序列吧。左边的序列是“31254”。请将这个序列以3为基准数进行调整,使得3左边的数都小于等于3,右边的数都大于等于3。

最后你来将选择排序的关键代码补全,请移步到该网站的《排序算法》课程中,习题在内容最后。

好,我们这次先讲到这里,请进入作者主页继续学习后续的算法课程。或进入上面的地址免费学习完整的算法课程。

THE END
1.算法学习攻略总结:入门至进阶,通关之路指南算法学习路线(2)某种算法思想的掌握:这类题你掌握了某种算法思想,就会比较容易,如果不懂,那就凉凉了。例如动态规划、回溯、枚举、深度/广度、贪心、二分等。其中,我觉得动态规划考的挺多,还有就是回溯+深度/广度。 (3)边界条件的考察:这类型的题,估计你一看就有思路,知道该怎么做,但是,它的边界条件特别多,需要分很多种https://blog.csdn.net/qq_26664043/article/details/140073279
2.不花一分钱自学算法刷题经验(零基础版)推荐一个labuladong的算法小抄,结合代码随想录一起使用,效率更高 赞(1) 回应 momo 2023-08-31 22:45:54 云南 谢谢楼主 希望您能继续输出高能内容 赞 回应 柚柚柚子皮 楼主 2023-09-01 00:44:29 广东 [该条回应已被删除] momo 笑死!本穷鬼怎么可能花钱,就是要教大家免费高效自学!学到就是赚https://www.douban.com/group/topic/294208572/
3.自学破解电商平台加密算法并倒卖,上海一男子获利17万元被公诉陈某某没想到,当初为了下载女儿的成长视频而自学的某知名短视频平台加密算法,却因一时贪念,反将自己一步步“算计”进法网。 事情还要追溯到两年前。 为下载女儿成长视频,他自学平台加密算法 陈某某是一名程序员,平时经常会给自己女儿拍些短视频作为成长过程的记录,并随手发在某短视频平台上。2020年10月,陈某某想将https://zfw.xzdw.gov.cn/zfjj/xxyd/202212/t20221215_304415.html
4.编程达人游戏新锐,算法少年考上华东师大从小自学编程知识,将兴趣变成专业。来自江西师范大学附属中学的许乐,即将作为2023级新生进入华东师大计算机科学与技术专业学习。他的报考选择始于最坚定的热爱,也来自七年信息算法的底气。 许乐(中)和同伴在机房打ICPC现场 |每天两个小时,“写代码让我拥有成就感” https://www.ecnu.edu.cn/info/1094/63437.htm
5.我是如何成为算法工程师的,超详细的学习路线算法的学习路线,主要分为 4 个部分:数学基础、编程能力、算法基础、实战。 点赞再看,养成习惯,微信公众号搜索【JackCui-AI】关注这个爱发技术干货的程序员。本文 GitHubhttps://github.com/Jack-Cherish/PythonPark已收录,有一线大厂面试完整考点、资料以及我的系列文章。 https://cuijiahua.com/blog/2020/10/life-73.html
6.亚马逊A10算法下,产品优化的这些误区你中招了吗?通过捆绑销售的deal 活动,为互补产品获得更多的流量从而推动销量,最终让系统自动增加产品关联度。举例而言,假设你正在售卖一款无线键盘,尝试选择店铺内一款鼠标做促销捆绑销售,通过打包价格刺激消费者尽可能地购买。这样能帮助A10 算法“自学”将这些产品放在 ‘frequently bought together’ 位置上。https://www.cifnews.com/article/102822
7.循环生成网络CycleGan原理介绍腾讯云开发者社区生成对抗网络(简称GAN)[2]是能够创建数据的机器学习算法。当向他们提供诸如图像,声音或文本之类的信息时,他们学会生成新的外观/声音相似的输出。例如:给定一组人脸图像,该算法可以自学(通过机器学习数据进行训练)人脸的外观,并能够创建新人脸。 CycleGAN是传统GAN的特殊变体。他们也可以创建新的数据样本,但是通过转换输https://cloud.tencent.com/developer/article/1646144
8.如何系统地学习数据结构与算法?自学数据结构与算法最全路线通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。 4. 算法之美(豆瓣8.0分) 这本书告诉我们如何更有效https://zhuanlan.zhihu.com/p/279209853
9.[算法课]算法课全题目解答及各周链接此处无物的技术博客解法2:蛮力算法 自学题目 异或解决唯一重复值查找问题 思路 代码 解法1.暴力比对 第二周 上课题目 试题A: 组队 数据 思路 代码 解法1.枚举 解法2.贪心 解法3.深度优先搜索 解法4.动态规划 试题C: 数列求值 思路 代码 作业题目 注意---所有人做这2个题目的时候,使用2种方法,其中一种必须用枚举书写! 试题https://blog.51cto.com/u_16014765/6651106