【发布时间】:2022-01-10 00:11:04
【问题描述】:
我创建了一个自定义链接列表,代码如下。 现在尝试实现一种排序(它是我告诉要做的,不是我所知道的最佳选择),我们如何以最佳可能的时间复杂度或最佳方法来做
我的自定义链表 我的疑问是最后一个节点,在冒泡排序的每个阶段都应该尝试最后排序然后从第一个节点重新开始,如何处理最后一个节点作为它指向第一个节点的点
public class CustomCircularList<T> : ICollection<T>, IEnumerable<T>
{
Node<T> head = null;
Node<T> tail = null;
int count = 0;
readonly IEqualityComparer<T> comparer;
public int Count { get { return count; } }
public bool IsReadOnly { get { return false; } }
public void Add(T item)
{
this.AddLast(item);
}
AddLast...
}
}
我的 Node 类具有三个属性
public T Value { get; private set; }
public Node<T> Next { get; set; }
public Node<T> Previous { get; set; }
我像这样将 IComparer 添加到我的 T 类并尝试像下面这样工作
public class Fund: IComparer<Fund>
{
public string fundname{ get; set; }
public int Compare([AllowNull] Fund x, [AllowNull] Fund y)
{
if (x == null || y == null)
{
return 0;
}
return x.fundname.CompareTo(y.fundname);
}
【问题讨论】:
-
只有一种可能的复杂性和方法,因为您的特定要求是使用一种特定的方法,而该方法本身具有特定的时间复杂度。获得更好的方法和/或更好的时间复杂度的方法是使用不同的方法,这违反了您声明的要求。
标签: c# algorithm sorting data-structures