2017-06-01 62 views
0

想象一下,我得到了兩個數組作爲輸入,其中一個已經排序。我想創建一個方法來檢查哪個數組被排序然後返回。林真的不知道如何做到這一點返回排序後的數組

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應在排序一個

回答

1

返回剛剛....循環遍歷數組的一個轉向;如果值不斷下降,該數組是沒有排序

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

僅適用於按升序排序的數組。當然,OP並沒有表明數組可以以任何其他方式排序。 – Scott

+1

@ Scott確實,但微不足道的擴展概念 –

+0

@MarcGravell我得到一個錯誤,說: 由於'Program.CheckSorting()'返回void,一個返回關鍵字不能跟一個對象表達式 –

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; 
     } 

這種方法可以幫助你, 但什麼也如果兩個或沒有命令來實現?