C#二叉排序树的模板类 本人想写个二叉排序树的模板类,关键字的类型为class bitree<T>中的T,要比较大小需要怎么重载<,>,=运算符?求大佬解答一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 where T:IComparable只要实现了 IComparable 接口的类型都可使用(C#的基础类型基本都实现了 IComparable 接口)对于没有实现 IComparable 的自定义类型,你就实现一下就可以了 public static void BubbleSort<T>(T[] array, Comparison<T> comparison) { bool hasExchagend = false; for (int i = 0; i < array.Length - 1; i++) { for (int j = array.Length - 1; j > i; j--) { hasExchagend = false; if (comparison(array[j - 1], array[j]) > 0) { Exchange<T>(ref array[j], ref array[j - 1]); hasExchagend = true; } } if (!hasExchagend) { return; } } } 这是一个冒泡排序泛型版本的实现,你可以参考下。上面的代码使利用传入委托来实现的。 comparison委托应该怎么初始化呢? 你先用一种类型(比如 int)把代码调试好然后再考虑泛型 不用泛型是通的,用泛型编译器是这样的,我想问的是comparison应该初始化为什么 comparison 是你自定义的方法或委托,他需要什么,只有你自己才知道 #2 的 Comparison 是他自定义的类型,Comparison 中文释义:比较C# 预定义的是 IComparable 接口, Comparable 中文释义:可比较的 C#没有模板,C#的泛型和c++的模板有根本的不同。 设计模式 值对象使用 大鸟们来发表下自己的理解 MDI窗体问题 C#连接数据库问题 SharpZipLib怎么压缩目录 如何将winform中的listbox 与 hashtable绑定 关于连续投票的问题(帮下,加急快件) TreeView提交后怎样防止刷新,百分相送!请高手帮忙! 高手指教:如何在C#中用WMI获得本机windows已经安装的组件 <input type="file" >上传二进制图片的事例,在VS2003下 C# Remoting重定向问题 关于安装部署,研究了好久没有搞明白 谁用过UAP,VS 出现这种情况,是怎么回事?
只要实现了 IComparable 接口的类型都可使用(C#的基础类型基本都实现了 IComparable 接口)
对于没有实现 IComparable 的自定义类型,你就实现一下就可以了
{
bool hasExchagend = false;
for (int i = 0; i < array.Length - 1; i++)
{
for (int j = array.Length - 1; j > i; j--)
{
hasExchagend = false;
if (comparison(array[j - 1], array[j]) > 0)
{
Exchange<T>(ref array[j], ref array[j - 1]);
hasExchagend = true;
}
}
if (!hasExchagend)
{
return;
}
}
}
这是一个冒泡排序泛型版本的实现,你可以参考下。上面的代码使利用传入委托来实现的。
然后再考虑泛型
C# 预定义的是 IComparable 接口, Comparable 中文释义:可比较的