摘要: 快速幂 顾名思义,快速幂算法是对幂运算的一个加速优化,其算法框架基于分治算法(二分)之上。 接下来,介绍两种优化方法。 ·基本快速幂算法 首先,给出传统求幂的代码: 以求2的12次方为例,在传统求幂代码中,计算2的12次方需要计算11次乘方。但实际上,我们可以先计算出2的平方的值,把计算过程转化为4 阅读全文
posted @ 2019-01-20 16:18 宫锁匠心 阅读(461) 评论(0) 推荐(0)
摘要: 队列是什么??? 今天我们来谈一谈队列。 队列同样是一种线性表,但其运算受到一定的限制。其限制在于仅允许在队的一段(这里我们把它叫做队尾)进行插入操作,另一端(把它叫做队首)则进行删除操作。 这和现实生活中的排队类似,由于有秩序,整个队列遵循先进先出原则。故又把队列称为先进先出表。 我们首先用数组对 阅读全文
posted @ 2018-12-13 22:18 宫锁匠心 阅读(2377) 评论(0) 推荐(0)
摘要: 堆栈应用之后序表达式 要求设计一个程序,能读取一个合法的中序表达式,将其转化为后序表达式并计算求值,输入的表达式可包括“+”“-”“*”“/”、正整数与圆括号,以“ # ”表示一个数字结束。 这里,我们可以考虑堆栈思想来实现整个操作过程。 首先,我们使用两个堆栈分别来储存结果与操作符,用一个字符串来 阅读全文
posted @ 2018-12-11 18:13 宫锁匠心 阅读(569) 评论(0) 推荐(0)
摘要: 何谓堆栈 堆栈是一种只能在一端进行插入或删除操作的线性表,属于逻辑结构。有数组与指针两种实现方式。 堆栈的主要特点为后进先出,每次进栈的新元素都在原来的栈顶元素之上,每次出栈的元素也是原来的栈顶元素。如下图: 下面给出堆栈的两种实现方式。 堆栈之指针实现: #include<cstdio> #inc 阅读全文
posted @ 2018-12-09 10:50 宫锁匠心 阅读(691) 评论(0) 推荐(0)
摘要: 链表是什么??? 链表是一种区别于顺序储存的非连续、非顺序的物理储存结构,也就是说,不像队列、堆栈之类的逻辑数据结构,它只是一种数据储存的物理结构。我们所使用的数组便是一种物理储存结构。 但与数组不同的是,它是链式储存的,而数组采用了顺序储存。 那么,什么是顺序储存与链式储存呢(⊙o⊙)? 顺序储存 阅读全文
posted @ 2018-12-08 22:18 宫锁匠心 阅读(755) 评论(0) 推荐(0)
摘要: 排序算法之归并排序 归并排序是一个稳定且高速的排序算法,同快速排序一样,时间复杂度为O(nlogn)。 这个算法非常好用,这里先给出代码. 归并排序是建立在分治算法上的排序操作。通过将多个有序序列合并,最终得到一个有序整体,这便是归并操作的思想。给出代码实现的便是将有序表两两合并,最终合成一个有序表 阅读全文
posted @ 2018-12-03 22:29 宫锁匠心 阅读(107) 评论(0) 推荐(0)