返回已排序的数组

时间:2017-06-01 12:23:13

标签: c# arrays sorting

想象一下,我得到两个数组作为输入,其中一个已经排序。我想创建一个方法来检查哪个数组已排序,然后返回它。我真的不确定如何做到这一点

class Program
{
    public double[] a = new double[] { 1, 3, 4, 8, 21, 38 };
    public double[] b = new double[] { 1, 7, 19, 3, 2, 24 };

    public void CheckSorting()
    {
        if (/* if a is sorted */)
        {
            return a; 
        }
        else { /* This should be OK because if A isnt sorted then b MUST be sorted since of the arrays are always sorted in my input */
            return b;
        }
    }

    static void Main(string[] args)
    {
        Program checkSorting = new Program();
        checkSorting.CheckSorting();
    }
}

在这种情况下,您可以看到数组A应该作为已排序的

返回

2 个答案:

答案 0 :(得分:1)

只是....在向前方向上循环其中一个阵列;如果值已经下降,那个数组就没有排序

for(int i = 1 ; i < a.Length ; i++)
{
    if(a[i] < a[i-1]) return b;
}
return a;

答案 1 :(得分:0)

private double[] ArraySort()
        {
            double[] a = new double[] { 1, 3, 4, 8, 21, 38 };
            double[] b = new double[] { 1, 7, 19, 3, 2, 24 };

            var isOrderedAscending = a.SequenceEqual(a.OrderBy(x => x));
            if (isOrderedAscending)
                return a;
            else
                return b;
        }

这种方法可能对你有帮助, 但是如果要么两个都没有订购要做什么呢?