算法(第四版)学习笔记之java实现可以动态调整数组大小的栈
2017-08-01 17:15
831 查看
下压(LIFO)栈:可以动态调整数组大小的实现
长处:
差点儿(但还没用)达到了随意集合类数据类型的实现的最佳性能:
1.每项操作的用时都与集合大小无关;
2.空间需求总是不超过集合大小乘以一个常数。
缺点:
某些push()和pop()操作会调整数组的大小,这项操作的耗时和栈的大小成正比。
import java.util.Iterator; public class ResizingArrayStack<Item> implements Iterable<Item> { private int N = 0; private Item[] a = (Item[]) new Object[1]; public boolean isEmpty() { return N == 0; } public int size() { return N; } public void resize(int max) { Item[] temp = (Item[]) new Object[max]; for(int i = 0 ; i < N ; i++) { temp[i] = a[i]; } a = temp; } public Item pop() { Item item = a[--N]; a = null; if(N > 0 && N == a.length / 4) { resize(a.length / 2); } return item; } public void push(Item item) { if(N == a.length) { resize(a.length * 2); } a[N++] = item; } @Override public Iterator<Item> iterator() { // TODO Auto-generated method stub return new reverseArrayIterator(); } private class reverseArrayIterator implements Iterator<Item> { private int i = N; @Override public boolean hasNext() { // TODO Auto-generated method stub return i > 0; } @Override public Item next() { // TODO Auto-generated method stub return a[--i]; } @Override public void remove() { // TODO Auto-generated method stub } } }
长处:
差点儿(但还没用)达到了随意集合类数据类型的实现的最佳性能:
1.每项操作的用时都与集合大小无关;
2.空间需求总是不超过集合大小乘以一个常数。
缺点:
某些push()和pop()操作会调整数组的大小,这项操作的耗时和栈的大小成正比。
相关文章推荐
- 算法(第四版)学习笔记之java实现能够动态调整数组大小的栈
- 算法(第四版)笔记<一>-------动态队列的数组实现(Java语言)
- 算法(第四版)学习笔记之java实现栈和队列(链表实现)
- 算法(第四版)学习笔记之java实现基于堆的优先队列
- 算法(第四版)学习笔记之java实现插入排序
- 算法(第四版)学习笔记之java实现二叉查找树
- 算法1.1 下压(LIFO)栈 (能够动态调整数组大小的实现)
- 算法(第四版)学习笔记之java实现希尔排序
- 算法(第四版)学习笔记之java实现选择排序
- 算法(第四版)学习笔记之java实现堆排序
- 栈的数组实现(动态调整数组大小) JAVA版本
- 算法(第四版)学习笔记之java实现归并排序
- 算法(第四版)学习笔记之二分查找的递归与非递归java实现
- 算法(第四版) 能够动态调整数组大小的队列数据结构
- 算法(第四版)学习笔记之java实现快速排序
- 算法(第四版)学习笔记之java实现希尔排序
- 下压栈(能动态调整数组大小的实现)
- java笔记之数组的概念、声明、初始化、访问方式、复制和动态扩展算法以及递归
- Java 线程同步问题 生产者-消费者 算法实现 -Java学习笔记(29)
- 下压栈——能够动态调整数组大小的实现