达到什么程度算是完全掌握了排序算法?
1 了解排序算法的中心思想。
2 当提供一个待排序数组时,能通过图例模型,来推理排序过程,并得到最终结果。
3 可以根据1-2用编程语言写出排序算法。
4 了解排序算法占用内存的多少和对Cpu的影响,了解排序算法的时间复杂度和空间复杂度的上限和下限。
我是如何思考、总结1~4的内容?
1 通过网络搜集适合自己阅读的概念描述,并找到一个在实际生活中,实现该算法的例子。如:插入排序的和新思想就是【打扑克抓牌】 。注释:我们通过生活来了解外界,出非你是玩理论的人,否则不热爱生活的人,也不能把算法用到实际中,学习算法的又有何意义?
2 通过生活中的例子根据算法,从头到尾排序。这一步最中要的是,要以模型的方式来推理这个过程。模型:图例。
这样做的好处:1 生活中的例子:是你熟悉的事物。当过了N年后,只要你需要这个东西的时候,能方便的回忆。
2 模型的例子:推理具体的动作。这一步相当于动手做实验。目的是对于排序算法有一个感官上的认识。
就是说:【她】尽管难以把握,但是一个实在的玩意,我们需要了解过程的细节。
有一个不错的主意可以尝试一下:有一些算法动画,嘿嘿这个东西很有用的。
3 通过计算机来实现2。
有些人很聪明,2分钟搞定。有些人不聪明,20个小时还没有思路。聪明人啊,我不是,此时你对于我=看不见。
这些话是写给向我一样的蠢人的,当我们的智力无法达到【成功的对岸】时,我们需要借助一些【作弊手段】
来找到我们思考的盲点。
1 我们了解了概念,可以画图来推理到正确的结果,但我们不能用编程语言来实现这个算法,
ok,我们的用【语言】表达问题的方式有些问题,把有问题的部分先记下来。
2 一个子“抄”。
到网上找到你看得还算【OK】的算法代码,并勤奋的动手“逆向思维”。
首先在设计思路上比较差别,然后通过修改代码结合断点来推理你思维的误区和盲点,最后解决问题。
最后,总结一下你的思维盲点,这对于我们很【重要】,想想当时为什么这么想而不这么想,多问为什么,
是要学习排序算法吗?不完全是,本质是了解自己思维的误区,提高自己的思维能力。
3 写好算法后,还需要对有特征的部分进行封装(封装成函数),这样做的好处是,当你在此回忆这个地方的时候,
只需了解功能和接口就可以了,可以有效的提高思考的效率。
4 的目的:
1 要知道排序算法对机器的影响,判断何时使用哪种算法更合理些。