数据结构
Java_Super_Man
这个作者很懒,什么都没留下…
展开
-
堆排序
堆排序package changsheng.algorithms.sort;import changsheng.algorithms.util.Swap;public class HeapSort { private int heapSize = 0; public void Sort(int[] a) { heapSize = a.length; /*构建大顶堆原创 2012-11-28 16:48:18 · 478 阅读 · 0 评论 -
Queue实现
队列接口public interface Queue { /** * 将元素e插入队列 */ void enqueue(E e); /** * 返回并移除列头元素 */ E dequeue(); /** * 返回队列头的元素 */ E getFront(); /** * 判断队列是否为空 */ boolean isEmpty(); /**原创 2012-11-28 12:40:55 · 647 阅读 · 0 评论 -
HashSet实现--平方探测
package changsheng.algorithms.hash;import java.util.ConcurrentModificationException;import java.util.Iterator;import java.util.NoSuchElementException;/** * HashSet implementation. * Matches a原创 2012-11-30 22:09:07 · 676 阅读 · 0 评论 -
BinaryTree 迭代器实现 非递归实现
迭代器抽象类本实现摘自 数据结构与问题求解,其实现非常符合Java风格以及面向对象思想。// ******************PUBLIC OPERATIONS**********************// first and advance are abstract; others are final// boolean isValid( ) --> T原创 2012-11-28 15:19:47 · 558 阅读 · 0 评论 -
BinaryTree实现
二叉树结点类实现// BinaryNode class; stores a node in a tree.//// *******************PUBLIC OPERATIONS**********************// int size( ) --> Return size of subtree at node// int height( )原创 2012-11-28 14:43:49 · 769 阅读 · 0 评论 -
Stack实现
Stack接口public interface Stack { E pop(); void push(E e); E peek(); boolean isEmpty(); void clear(); int size();}顺序表栈public class Stack_Array implements Stack { /* 当前元素个数 */原创 2012-11-27 15:42:26 · 859 阅读 · 0 评论 -
二叉查找树 BinarySearchTree 实现
在二叉查找树里用到了大量的递归调用,首先整清楚一个问题-----引用拷贝,下面代码实际上swap的两个参数都是引用的拷贝。public class Main { public static void main(String[] args) { String s1 = "1"; String s2 = "2"; swap(s1,s2); System.out.println原创 2012-11-28 22:08:17 · 692 阅读 · 0 评论 -
AVLTree 二叉平衡树 实现
package changsheng.datastructure;// ******************PUBLIC OPERATIONS*********************// void insert( x ) --> Insert x// void remove( x ) --> Remove x (unimplemented)// Compara原创 2012-11-30 23:09:29 · 826 阅读 · 0 评论 -
HashTable实现--分离链式法
JDK中的相应Hashtable中并没有使用LinkedList,而是使用自封装的Entry,显得使其更紧凑,且没有冗余。protected Entry(int hash, K key, V value, Entry next) { this.hash = hash; this.key = key; this.value = value; this.原创 2012-12-03 13:11:37 · 848 阅读 · 0 评论 -
LinkedList实现
JDK源码中只包含了一个header节点,各有利弊。import java.util.Iterator;import java.util.NoSuchElementException;public class LinkedList { public LinkedList() { clear(); } /** * 清空链表 */ public void clear() {原创 2012-11-27 23:33:40 · 587 阅读 · 0 评论 -
ArrayList实现
ArrayListList接口package changsheng.algorithms.list;import java.util.Iterator;public interface List { public boolean add(E e); public void add(E e,int i); public E remove(int i); public bo原创 2012-11-27 21:39:06 · 584 阅读 · 0 评论 -
二分插入排序 插入排序 希尔排序
插入排序public static int[] sort(int[] a) { int length = a.length; for (int i = 1; i < length; i++) { int key = a[i]; int j = i - 1; // 此处为什么是j>=0呢?因为当j=0时如果还符合a[j]>key则还需要进行移位操作。 while原创 2012-11-28 16:14:10 · 501 阅读 · 0 评论 -
冒泡排序 选择排序
冒泡排序public class BubbleSort { public static int[] Sort(int[] a) { int len = a.length; for (int i = 1; i <= len - 1 ; i++) { for (int j = 0; j < len - i; j++) { if (a[j] > a[j + 1]) {原创 2012-11-28 16:30:53 · 423 阅读 · 0 评论 -
归并排序
归并排序public class MergeSort { public static int[] Sort(int[] a) { /* 此处使用和原数组大小一样的数组 */ int[] b = new int[a.length];/*额外的数组空间*/ mergeSort(a, b, 0, a.length - 1); return a; } private st原创 2012-11-28 16:35:04 · 406 阅读 · 0 评论 -
快速排序
快速排序package changsheng.algorithms.sort;public class QuickSort { public static void Sort(int[] a){ Sort(a,0,a.length-1); } public static void Sort(int[] a, int low, int high) { /*实际上原创 2012-11-28 16:41:23 · 518 阅读 · 0 评论 -
PriorityQueue--优先级队列
优先级队列内部维护的是一个二叉堆,通过阅读代码可以发现最主要的操作就是remove操作,当删除一个元素时,有可能破坏了小顶堆的特性,需要重建堆,然后重建堆的操作便是构成堆排序(注意堆排序使用的是大顶堆特性)的基础。所以掌握了优先级队列的二叉堆实现,便掌握了堆排序,反之亦然。package changsheng.algorithms.heap;// PriorityQueue interfa原创 2012-12-04 13:57:34 · 881 阅读 · 0 评论