/// <summary>
 /// Sort jagged array due condition.
 /// </summary>
 /// <param name="keyValues">Key values of jagged array.</param>
 /// <param name="array">Jagged array.</param>
 /// <param name="comparator">Compare our element in the array.</param>
 private static void SortJaggedArray(int[][] array, DelegateType.Comparer comparator)
 {
     for (int i = 0; i < array.Length - 1; i++)
     {
         for (int j = 0; j < array.Length - i - 1; j++)
         {
             if (comparator(array[j], array[j + 1]) > 0)
             {
                 Swap(ref array[j], ref array[j + 1]);
             }
         }
     }
 }
 /// <summary>
 /// Constructor, which has comparer delegate.
 /// </summary>
 /// <param name="comparer"></param>
 public DelegateAdapter(DelegateType.Comparer comparer)
 {
     this._comparer = comparer;
 }
 /// <summary>
 /// Sort the jagged array.
 /// </summary>
 /// <param name="array">Input array.</param>
 /// <param name="delegateComparer">The delegate, which contain method to compare.</param>
 public static void Execute(int[][] array, DelegateType.Comparer delegateComparer)
 {
     SortJaggedArray(array, delegateComparer);
 }