3.1.12

3.1.12 #

解答 #

建立类 Item

public class Item<TKey, TValue> : IComparable<Item<TKey, TValue>>
    where TKey : IComparable<TKey>
{
    public TKey Key { get; set; }
    public TValue Value { get; set; }

    public int CompareTo(Item<TKey, TValue> other)
    {
        return Key.CompareTo(other.Key);
    }
}

之后修改 BinarySearchST,将其中的 TKey[] keysTValue[] values 数组用 Item[] items 数组代替。

例如 keys[i] 变为 items[i].Keyvalues[i] 变为 items[i].Value

添加一个构造函数,调用之前编写的归并排序实现。

/// <summary>
/// 根据已有的键值对构造一个符号表。
/// </summary>
/// <param name="items">已有的键值对。</param>
public ItemBinarySearchSt(Item<TKey, TValue>[] items)
{
    _items = new Item<TKey, TValue>[items.Length];
    Array.Copy(items, _items, items.Length);
    _n = items.Length;
    var merge = new MergeSort();
    merge.Sort(_items);
}

另请参阅 #

Merge 库 SymbolTable 库