冒泡算法是最快的吗?
不是。世界上最快的算法是timsort算法。
经过60多年的发展,科学家和工程师们发明了很多排序算法,有基本的插入算法,也有相对高效的归并排序算法等,他们各有各的特点,比如归并排序性能稳定、堆排序空间消耗小等等。但是这些算法也有自己的局限性比如快速排序最坏情况和冒泡算法一样,归并排序需要消耗的空间最多,插入排序平均情况的时间复杂度太高。在实际工程应用中,我们希望得到一款综合性能最好的排序算法,能够兼具最坏和最好时间复杂度(空间复杂度的优化可以靠后毕竟内存的价格是越来越便宜),于是基于归并和插入排序的TimSort就诞生了,并且被用作Java和Python的内置排序算法。
什么和算法是程序的两个方面?
数据结构和算法是程序的两个方面。数据结构定义了程序的基础数据的存在形式,比如常见的数组、链表、队列、栈等,复杂一些的比如二叉树,红黑树等树结构,算法则是如何把以一定数据结构存储的数据进行读取存储和运算,比如最常见得排序算法冒泡排序,比较排序,复杂一点得譬如java里面hashmap的实现-链表和红黑树的结合。
java算法能力很差,逻辑思维也一般,该怎么提高?
java算法能力差,想提高算法的话,现在比较直接的方法就是刷题,刷算法和数据结构的题可以解决,这里我推荐几个刷题网站,如果你坚持刷题的话,算法的短板是可以解决地。
比较好的刷题网站推荐
牛客网。
牛客网是程序员学习和成长的专业平台。如果你想提升自己的水平,这个就是比较完美的刷题网站。它上面不止有算法和数据结构的题目。包括国内著名互联网公司的每年的招考真题,是一个非常成熟的社区,你刷的题不会一般都会有刷题者给出了思路,而且上面还有许多开源的提升书籍。像《剑指offer》等。我自己在上面刷了一些题,真的非常实用的网站。刷题首选!
2. LintCode领扣。
领扣也是一个非常著名的刷题网站。它是一个国外网站,但是现在也有国内站点,解决了以前英语不好同学的短板。上面的题主要是算法和人工智能的题目,对于新手来说有点梯度,但是上面的题目非常具有挑战性,如果想提升自己,不可错过!
3.GitHub
。
作为一个程序员,如果不知道github就有点说不过去了,这是一个提升自己最好的网站之一吧。有些东西你可能写不出来,但是在github上,基本上都可以找到你想要的。在github上,开源精神是非常值得我们学习的,每个小白还是大神都可以get东西的社区。github上你做的一些东西可能就是你面试时非常实用的简历。
以上就是我推荐一些提高自己算法的刷题网站。算法是程序的灵魂。希望以上的方法能帮助到你!
1.算法的话,先将大学的《数据结构》的课程在看一遍,将经典算法的例子全亲自敲一遍。逻辑思维的话建议将数学相关的课程在看一遍,提高数学逻辑思维。
2.有了以上基础,你还是停留在理论基础上,还需要拿实际项目来练手。一个产品的从架构的建立,到每个模块的耦合,到实际的上线的压力测试出现Bug的分析解决,全程跟踪一遍,我相信通过这样的练习你会有很大的进步。
3.不要盲目的去程序网站学习别人的例子,个人觉得很不可取。别看错了不是不学,是不要盲目。现在程序网站一大把,很多案例都是老掉牙的而且有问题的,很多例子的代码总是从一个网站拷贝到另一个网站,都是很雷同的。你要是倒霉碰巧老遇到那些不可取有问题的代码案子,只会将你带入一个有泥潭。学习很重要,一定要站在巨人的肩上学习,多多分析像QQ、阿里巴巴、Google等互联网巨头开发产品运用的技术,然后找对应得到Demo进行学习演练。
以上都是个人工作和项目开发的经验,有空可共同讨论哟。
我不明白你说的这个算法是什么。我就是做java的,我觉得如果算法不好的话,逻辑不好还是本身没有思路没有经验,逻辑可以通过后期训练提升,算法我觉得也是吧,后期就好了,当初我前期也是差不多不会,什么冒泡 雪花之类的算法都不精通,逻辑也不是很好,后期工作后经过锻炼就好了,别灰心,建议前期多写多看,多提高。