算法
_带头大哥
进击的小李
展开
-
位运算符中的算法<3>
2020.2.2 15:41 变秃变强 又是担惊受怕的一天,一早上醒来看到增加的病例人数,真是 令人触目惊心,希望疫情可以早点过去。 早上起来吃饭就开始坐在电脑前,搞了几个小时,才搞了几道, 虽然慢,但是理解了就很有成就感,毕竟,我这么聪明, 是清华得不到的人闲谝结束,直接上题了。题目一:用...原创 2020-02-02 16:35:17 · 396 阅读 · 2 评论 -
一遍单向扫描法和双向扫描法
2020.2.20 17:00在java中调用sort()方法的时候,会自动地排序好数组元素,而sort()中使用的排序是快速排序。快速排序有两种实现的方式①:单向扫描法②:双向扫描法单向扫描法思路&过程 思路:用两个指针将数组分成成三部分,左边的扫描指针,右边在数组末尾再定义一个指针, 主元默认定义为数组的第一个元素,如果扫描指针指到的元素小于主元,那么元素的位...原创 2020-02-20 17:11:46 · 2005 阅读 · 1 评论 -
在有空串的字符串中查找和优化a的n次幂算法
2020.2.17 11:30题目三:在有空字符串的有序字符串数组中查找 :有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串(肯定不是空字符串)的索引思路:看到数组有序,首先应该要想到用二分法来去做,框架要先搭建出来,begin、mid、end、以及mid>要找的元素,end=mid-1,mid<时,begin=mid+1. 其次,...原创 2020-02-17 11:38:27 · 395 阅读 · 2 评论 -
算法题目:旋转数组求最小值
2020.2.14 12:00题目:把一个数组最开的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数字的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。思路:①设置头,末尾。中间元素的指针。-----> begin 、mid、end.②首先拿到一个递增的数组,如果这个数组没有旋转的话,...原创 2020-02-14 12:15:58 · 293 阅读 · 2 评论 -
算法题目:小白上楼梯
2020.2.13 12:00补充一下几种排序的复杂度: 注: 算法的稳定性:指的不是算法的时间复杂度不稳定 如果在排序之前a在b的前面(a=b时),排序完以后,a跑到b的后面,那么称这个算法不稳定。排序完以后,两个数的位置不交换,那么称算法稳定。题目:小白走楼梯:小白正在上楼梯,总共有n阶楼梯,她总共可以有三种方式,一次上阶,两节...原创 2020-02-13 12:53:21 · 749 阅读 · 9 评论 -
算法的性能评估与复杂度对比<1>
2020.2.11 12:22评估算法性能:①:主要评估问题的输入规模n与元素的访问次数f(n)的关系。②:大O符号:忽略非主体的部分,如常数项,低阶项。③:O(g(n)):表示这个算法有一个渐进上界,这个渐进上界为g(n),算法的运行时间f(n)趋近并且小于等于这个g(n)。举例: ①: for(int i=0;i<=n;i++)...原创 2020-02-11 13:35:01 · 567 阅读 · 2 评论 -
巧妙排序——————希尔排序
2020.2.10 21:23希尔排序: 描述:将整个待排序的序列分割成为若干个子序列,分别进行直接插入排序, 等到整个序列基本有序 时,再对全体的序列进行一次直接插入排序。技巧:子序列的构成不是简单地"逐段分割",将相隔某个增量dk的记录组成一个子序列,让增量dk逐趟缩短(例如依次取5, 3,1)知道...原创 2020-02-10 21:54:37 · 348 阅读 · 4 评论 -
二分法查找与递归下的二分法查找
2020.2.9 13:14二分法定义:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较,如果当前位置arr[k]值等于key,则查找成功;若key小于当前位置值arr[k],则在数列的前半段中查找,arr[low,mid-1];若key大于当前位置值arr[k],则在数列的后半段中继续查找arr[mid+1,high],直到...原创 2020-02-09 13:32:01 · 677 阅读 · 3 评论 -
递归实现汉诺塔
2020.2.8 16::00汉诺塔玩法:三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子C上,且每次移动同一根柱子上都不可以出现大盘子在小盘子上方的情况。 如果有三个盘子,则一共移动的次数为7次,有n个的话,则为2^n-1次 这么复杂的问题,如果用循环的话,很难去完成。...原创 2020-02-08 16:21:57 · 511 阅读 · 2 评论 -
递归形式改写插入排序
2020.2.7 13:30插入排序:思路:从第一个值开始,向前面的插入,后面的数字在向前面插入的时候,前面的数字一定已经排好序了,找一个位置将这个数再放入到正确的位置。注:(上面的那张图片和下面那个gif,是我保存的别人的,仅仅只是为了好理解,并没有其他的意思。)代码演示:public static void main(String[] args...原创 2020-02-07 13:59:07 · 1970 阅读 · 5 评论 -
递归算法题
2020.2.6 18:23 一:求两个数的最大公约数思路:辗转相除法,又名欧几里得算法。过程演示:求1997和615的最大公约数 1997 / 615 = 3 (余 152) 615 / 152 = 4(余7) 152 / 7 = 21(余5) 7 / 5 = 1 (余2) 5 / 2 = 2 (余1) 2 / 1 = 2 (余0)至此,最大公...原创 2020-02-06 19:10:46 · 459 阅读 · 1 评论 -
多分支递归——斐波那契数列
2020.2.6 11:00斐波那契数列:每一项都等于相邻的前两项之和。 (1 1 2 3 5 8 13…)这个问题跟兔子问题很相似,并且,该数列也被称为黄金分割数列(高位项的相邻两项之比近似为0.618)。 思路:再求的时候,在求第n项的时候将它分解为前两项 之和,即f(n)=f(n-1)+f(n...原创 2020-02-06 11:31:08 · 1563 阅读 · 3 评论 -
递归
2020.2.5 20:30 昨天是个好日子,1.11,俺的18岁生日,昨天一天啥也没干,安装 了个软件按了大半天都没好,兜了一大圈,最后花了10块钱在某宝上 让人家给我远程安装了一下。我可真是个fw。 今天一大早起来,就 开始听各种各样杂七杂八的课程,没什么进步,大概地了解了一下项目 需要用到的一些前后端操作。下午睡起来开始接着前天的进度,继...原创 2020-02-05 21:10:08 · 998 阅读 · 2 评论 -
位运算符中的算法<4>
2020.2.3 17:05 今天再补充两道题,第二道题相当有难度,至少我是这么认为的,视频讲解24分钟 我自己把它弄懂,花了3个小时......不知道是我自己太笨了还是啥。 话不多说了,直接上题。题目一:给定一个介于0~1之间的实数,类型为double,求二进制表示结果。 思路:首先可以回顾一下一个整数是怎样...原创 2020-02-03 17:35:04 · 451 阅读 · 2 评论