随笔分类 - 算法与数据结构(Java实现)
摘要:循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。队列可以更简单防止伪溢出的发生,但队列大小
阅读全文
摘要:问题:编写一个程序,实现一个整数集合的基本运算 要求:输入整数集合{2,4,1,3,5}和{2,5,10},输出前者的元素个数以及它们进行集合的并、交、差运算 设计一个类IntSet,包括私有数据成员len(集合的长度)和数组s(存放集合元素),以及如下方法: public void insert(
阅读全文
摘要:优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(
阅读全文
摘要:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻
阅读全文
摘要:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针实现的。链表由一系列结点组成,结点可以在运行时动态生成,而且由于没有闲置的内存,因此空间效率比数组高。其插入操作可达到O(1)复杂度,但是查找或者访问特定的结点复杂度是O(n)。 一、链表优点: 空间没有限制 插入
阅读全文
摘要:随机算法 随机算法分为两大类:蒙特卡罗算法和拉斯维加斯算法,都是以著名的赌城命名的,且都是通过随机采样尽可能找到最优解。 这两类随机算法之间的选择,往往受到问题的局限。 如果问题要求在有限采样内,必须给出一个解,但不要求是最优解,那就要用蒙特卡罗算法。 反之,如果问题要求必须给出最优解,但对采样没有
阅读全文