摘要: 1、最简单的算法借助于一个n元的中间向量在n步时间内完成 时间复杂度:O(n) 空间复杂度O(n) 2、使用翻转的思路完成一个不需要额外空间、编写简单并且实际运行很快的算法 时间复杂度:O(n) 3、在O(n)时间内完成、不需要额外空间的杂技算法 原理是:将x[0]移动到t,将x[i]移动到x[0] 阅读全文
posted @ 2018-03-22 09:25 赵永驰 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 问题:在以空间换时间的编程策略中,随着空间的增大,可能初始化空间本身需要消耗的时间越来越多。 可以通过设计如下的方案,在第一次访问向量的项时将其初始化为0,可以使用常量时间进行向量的初始化和向量访问,使用的额外空间正比于向量的大小,即进一步增加空间消耗来减少初始化的时间。 假设保存数据的向量的长度为 阅读全文
posted @ 2018-03-19 14:27 赵永驰 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 商店允许顾客通过电话订购商品,并在几天后上门自取。商店的数据库使用客户的电话号码作为其检索的关键字(客户知道自己的电话号码,而且这些电话关键字几乎是唯一的)。如何组织商店的数据库,以允许更加高效的进行插入和检索操作呢? 将纸质订单表格放在10x10的箱数组中,使用客户电话号码的后两位作为散列索引(为 阅读全文
posted @ 2018-03-19 00:16 赵永驰 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 问题定义: 输入:两个整数m和n,其中m<n。 输出:[0,n-1]范围内m个整数的有序列表,不允许重复。 1、假如我们拥有一个能返回很大的(远大于m和n)的随机整数的函数bigrand() 顺序考虑整数0...n-1,并通过bigrand()的测试对每个整数进行选择,这样保证输出的数为有序的。 考 阅读全文
posted @ 2018-03-17 13:25 赵永驰 阅读(201) 评论(0) 推荐(0) 编辑
摘要: (1)插入排序 (2)简单的快速排序 原理:利用分治的思想,将数组排序范围最左端的元素作为参照,将比其小的元素移到其左边,将比其大的元素移动到其右边,在分别对两边的进行递归排序即可。 (3)更好的几种快速排序 1、双向划分 2、随机选取参照元素 将sp出的元素与[sp, ep]中随机的某个元素进行交 阅读全文
posted @ 2018-03-16 23:31 赵永驰 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 对磁盘文件进行排序,文件包含最多一千万条记录,每条记录都是7位的整数,无其他相关数据,每个整数只出现一次,由于某种系统需要,只能提供1MB左右内存。由于是实时系统,最多运行几分钟就能给出回应,十秒钟是比较理想的运行时间。 准确的问题描述: 输入:一个包含n个正整数的文件,每个数都小于n,其中n=10 阅读全文
posted @ 2018-03-16 20:01 赵永驰 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 问题:输入具有n个整数的向量arr,输出向量的任意连续子向量和的最大值 特殊情况(1、当向量都为正数时,为整个向量 2、当向量都为负数时,为0,即空子串 ) 1、O(n2)的算法 (循环对所有情况进行遍历) 其中有个小细节就是 注意sum(i, j-1) 和 sum(i, j)的关系,不要每次在求和 阅读全文
posted @ 2018-03-16 19:02 赵永驰 阅读(4376) 评论(0) 推荐(0) 编辑
摘要: 一、你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 首先说明,在进入大学之前,对于计算机专业的相关问题一无所知,对编程一无所知,对于计算机的理解仅仅存在于玩游戏和瞎捣鼓的层面上,唯一感兴趣或者自己能够想到的问题就是计算机的硬件是如何处理我们的操作指令的,软件又是通过怎样的方式写成的。 阅读全文
posted @ 2017-09-16 21:53 赵永驰 阅读(183) 评论(2) 推荐(0) 编辑