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[] keys
和 TValue[] values
数组用 Item[] items
数组代替。
例如 keys[i]
变为 items[i].Key
,values[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);
}