コード例 #1
0
ファイル: Heap.cs プロジェクト: redsniper/PresentMap
 /// <summary>
 /// 将一个数组构造成堆
 /// </summary>
 /// <param name="array">需要构造成堆得数组</param>
 public Heap(HeapElement[] array)
 {
     m_heap = new List<HeapElement>();
     m_heap.AddRange(array);
     m_count = array.Length;
     initHeap();
 }
コード例 #2
0
ファイル: Heap.cs プロジェクト: redsniper/PresentMap
 /// <summary>
 /// 向堆中添加新的元素
 /// </summary>
 /// <param name="e"></param>
 public void addElement(HeapElement e)
 {
     e.heapLoc = m_count;
     m_heap.Add(e);
     m_count++;
     upAdjust(m_count - 1);
 }
コード例 #3
0
ファイル: SearchNode.cs プロジェクト: redsniper/PresentMap
        public override int CompareTo(HeapElement a)
        {
            if (!(a is SearchNode))
                throw new ArgumentException("a is not SearchNode!");

            SearchNode cpNode=(SearchNode)a;

            if (acPr > cpNode.acPr)
                return 1;
            else if (acPr == cpNode.acPr)
                return 0;
            else
                return -1;
        }
コード例 #4
0
ファイル: HeapElement.cs プロジェクト: redsniper/PresentMap
 /// <summary>
 /// 必须实现的比较函数
 /// </summary>
 /// <param name="a"></param>
 /// <returns>小于返回负值,等于返回零大于,返回正值</returns>
 public abstract int CompareTo(HeapElement a);
コード例 #5
0
ファイル: Heap.cs プロジェクト: redsniper/PresentMap
 /// <summary>
 /// 改变堆中一个元素的值,并保持堆得结构不变
 /// </summary>
 /// <param name="index">元素位置索引</param>
 /// <param name="newValue">新的值</param>
 public void changeValue(int index, HeapElement newValue)
 {
     m_heap[index] = newValue;
     upAdjust(index);
     downAdjust(index);
 }