public static int[][] Sort(int[][] arr, ArrayComparisonBy arrComparisonBy, OrderBy orderBy) { for (var i = 0; i < arr.Length; i++) { for (var j = 0; j < arr.Length - i - 1; j++) { if (CheckIfNeedSwap(arr[j], arr[j + 1], arrComparisonBy, orderBy)) { var temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return(arr); }
public static bool CheckIfNeedSwap(int[] arrayToSwapFirst, int[] arrayToSwapSecond, ArrayComparisonBy arrComparisonBy, OrderBy orderBy) { var temp = 0; var needSwap = false; int res; switch (arrComparisonBy) { case ArrayComparisonBy.Sum: res = arrayToSwapFirst.Sum() - arrayToSwapSecond.Sum(); temp = (orderBy == OrderBy.Asc) ? res : -res; break; case ArrayComparisonBy.Max: res = arrayToSwapFirst.Max() - arrayToSwapSecond.Max(); temp = (orderBy == OrderBy.Asc) ? res : -res; break; case ArrayComparisonBy.Min: res = arrayToSwapFirst.Min() - arrayToSwapSecond.Min(); temp = (orderBy == OrderBy.Asc) ? res : -res; break; } if (temp > 0) { needSwap = true; } return(needSwap); }