检查ArrayList是否已排序

本文关键字:排序 是否 ArrayList 检查 | 更新日期: 2023-09-27 18:02:58

我想知道是否有可能这样做,如果我可以循环检查数组列表是否排序,如果不是,显示一个消息框?

这是我尝试过的:

if (!aList.Sort)
{
   MessageBox.Show("The list isn't sorted");
}  

检查ArrayList是否已排序

Sort()是一个方法。我认为你想要Sorted属性。

if (!aList.Sorted)

注意,在列表框本身没有强制排序顺序的情况下,项也可以"按升序排列"。如果您只想检查显示的所有项是否按升序排列,那就是另一回事了。

编辑:要检查一个序列(无论是列表框中的项目还是ArrayList中的元素,这可能是你真正感兴趣的)是否排序,你只需要迭代它们,并将每个项目与前一个进行比较。使用泛型集合更容易做到这一点,但是…

public static bool IsSorted(IEnumerable sequence)
{
    // Now assuming that list
    using (IEnumerator iterator = sequence.GetEnumerator())
    {
        if (!iterator.MoveNext())
        {
            // An empty sequence is always sorted
            return true;
        }
        IComparable previous = (IComparable) iterator.Current;
        while (iterator.MoveNext())
        {
            IComparable next = (IComparable) iterator.Current;
            if (next.CompareTo(previous) < 0)
            {
                return false;
            }
            previous = next;
        }
        return true;
    }
}