摘要: 素数这个概念人类已经研究了上千年,但是的具体的起源却不得而知。早在公元前300年,欧几里得就在他的著作《元素》中证明了有无穷多个素数,同时也证明了任何一个整数都能够被某一个素数整除。时至今日,素数在计算机科学这样一个和数学联系紧密的学科中也有这个广泛的应用,比如布隆过滤器、伪随机数、RSA加密算法等等,所以掌握素数的特性以及应用能够帮助我们解决不少实际问题。 阅读全文
posted @ 2020-04-11 17:30 佛西先森 阅读(986) 评论(0) 推荐(0) 编辑
摘要: 对0和1的操作是计算机最底层的操作,所有的程序不管用什么语言写的,都要转化成机器能够读懂的语言也就是二进制进行基本的运算,而这些基本的运算就是我们今天要讲到的位运算。因为硬件的支持,计算机在进行二进制计算的时候要比普通的十进制计算快的多,把普通的运算用位运算的方法实现能够极大提高程序性能,是一个重要的技能。 阅读全文
posted @ 2020-04-11 17:26 佛西先森 阅读(658) 评论(0) 推荐(0) 编辑
摘要: 说到二分查找很多人都是耳熟能详,这个算法基本是每个工科生(不仅仅是计算机相关专业)的必备知识点,在各种算法的题目中出现的频率也是极高的。这篇文章将从最简单的二分查找开始讲起,然后用两个简单的二分搜索的变形的题目来加深对二分法的理解,希望能够让大家透彻的理解二分搜索这个重要的算法。 阅读全文
posted @ 2020-04-11 17:19 佛西先森 阅读(2285) 评论(0) 推荐(0) 编辑
摘要: 活学活用IntelliJ快捷键双击Shift搜索 阅读全文
posted @ 2020-04-11 17:09 佛西先森 阅读(1088) 评论(0) 推荐(0) 编辑
摘要: 经过60多年的发展,科学家和工程师们发明了很多排序算法,有基本的插入算法,也有相对高效的归并排序算法等,他们各有各的特点,比如归并排序性能稳定、堆排序空间消耗小等等。但是这些算法也有自己的局限性比如快速排序最坏情况和冒泡算法一样,归并排序需要消耗的空间最多,插入排序平均情况的时间复杂度太高。在实际工程应用中,我们希望得到一款综合性能最好的排序算法,能够兼具最坏和最好时间复杂度(空间复杂度的优化可以靠后毕竟内存的价格是越来越便宜),于是基于归并和插入排序的TimSort就诞生了,并且被用作Java和Python的内置排序算法。 阅读全文
posted @ 2020-04-11 16:58 佛西先森 阅读(35991) 评论(2) 推荐(7) 编辑
摘要: 排序算法在计算机科学入门课程中很普遍,在学习排序算法的时候,涉及到大量的各种核心算法概念,例如大O表示法,分治法,堆和二叉树之类的数据结构,随机算法,最佳、最差和平均情况分析,时空权衡以及上限和下限,本文就介绍了十二种排序算法供大家学习。 阅读全文
posted @ 2020-04-11 16:50 佛西先森 阅读(1663) 评论(1) 推荐(4) 编辑
摘要: 二叉树的遍历可能大家都比较熟悉了,这篇文章主要介绍了三种二叉树的遍历方法——递归、迭代和莫里斯遍历,他们各自有各自的特点。其中最重要的是莫里斯遍历,相对于前两种方法比较少见,只需要固定的空间就可以完成迭代遍历。这篇文章将会结合动图,带你了解关于树遍历的知识。 阅读全文
posted @ 2020-04-11 16:15 佛西先森 阅读(3229) 评论(2) 推荐(3) 编辑