算法的时间与空间复杂度

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢? 主要还是从算法所占用的「时间」和「空间」两个维度去考量。 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。 因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有的时候时间和空间却又是「鱼和熊掌」,不可兼得的,那么我们就需要从中去取一个平衡点。 下面我来分

经典算法题随机从连续的100个不重复数中取出100个不重复随机数

经典的面试题: 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复网上实现的方法也千奇百怪.实现思路:(1)把N个数放入Hashtable 或者arrayList 中.(2)从上面的集合中随机抽取一个数放入int数组中.(3)把取出的这个数从上面的集合中删除.(4)循环 (2),(3) 步骤,直到int数组取满为止.我们一般都会想到这种做法,但是当Hashtable或者ArrayList中放几千万,几亿数据时,这时从集合中删除元素将严重影响性能,如果突破此瓶颈? 网上找到一种更好的方法.(1)把N个数放到容器A(int数组)中.(2)从N个数中随机取出1个数放入容器B(
  • 1

回到顶部