public static object GetMax(object[] objs, DelCompare del) { object max = objs[0]; foreach (var item in objs) { max = del(max, item) > 0 ? max : item; // 需要传递一个比较的方式 } return(max); }
public static T GetMax <T>(T[] vars, DelCompare <T> del) { T max = vars[0]; foreach (T item in vars) { max = del(max, item) > 0 ? max : item; } return(max); }
/// <summary> /// 快排排序 /// QuickSort<int>(arr, 0, arr.Length-1, (int t1, int t2) => {return t1 - t2;}); /// </summary> public static void QuickSort <T>(T[] arr, int left, int right, DelCompare <T> del) { if (left < right) { int i = Division(arr, left, right, del); //对枢轴的左边部分进行排序 QuickSort <T>(arr, i + 1, right, del); //对枢轴的右边部分进行排序 QuickSort <T>(arr, left, i - 1, del); } }
public static object GetMax(object[] nums, DelCompare del) { object max = nums[0]; for (int i = 0; i < nums.Length; i++) { if (del(max, nums[i]) < 0) { max = nums[i]; } } return max; }
static object GetHighestSalary(object[] obj, DelCompare del) { object hightest = obj[0]; for (int i = 0; i < obj.Length; i++) { if (del(hightest, obj[i]) < 0) { hightest = obj[i]; } } return(hightest); }
//public static object GetMax(object[] nums, DelCompare delCompare) //{ // object max = nums[0]; // for (int i = 0; i < nums.Length; i++) // { // if (delCompare(max, nums[i]) < 0) // { // max = nums[i]; // } // } // return max; //} public static T GetMax <T>(T[] o, DelCompare <T> delCompare) { T max = o[0]; for (int i = 0; i < o.Length; i++) { if (delCompare(max, o[i]) < 0) { max = o[i]; } } return(max); }
public static T GetMax <T>(T[] nums, DelCompare <T> del) { T max = nums[0]; for (int i = 1; i < nums.Length; i++) { if (del(nums[i], max) > 0) { max = nums[i]; } } return(max); }
public static T GetMax <T>(T[] arr, DelCompare <T> del) { T max = arr[0]; for (int i = 1; i < arr.Length; i++) { if (del(max, arr[i]) < 0) { max = arr[i]; } } return(max); }
static T GetMax <T>(T[] nums, DelCompare <T> del) { T max = nums[0]; for (int i = 0; i < nums.Length; i++) { if (del(max, nums[i]) < 0)//需要传进来一个比较的方式 { max = nums[i]; } } return(max); }
public static T GetMax <T>(T[] names, DelCompare <T> del) { T max = names[0]; for (int i = 0; i < names.Length; i++) { if (del(max, names[i]) < 0) { max = names[i]; } } return(max); }
static object GetLowestSalary(object[] obj, DelCompare del) { object Lowest = obj[0]; for (int i = 0; i < obj.Length; i++) { if (del(Lowest, obj[i]) > 0) { Lowest = obj[i]; } } return(Lowest); }
public static object GetMax(object[] nums, DelCompare del) { object max = nums[0]; for (int i = 0; i < nums.Length; i++) { if (del(max, nums[i]) < 0) { max = nums[i]; } } return(max); }
static void Main(string[] args) { //Compare del = IntCompare; //object[] arr = { 34, 56, 3, 89, 75 }; //object max = GetMax(arr, del); //Console.WriteLine(max); int[] arr = { 34, 2, 67, 98, 21 }; DelCompare <int> del = intComp; int n = GetMax <int>(arr, intComp); Console.WriteLine(n); }
public static T GetMax <T>(T[] nums, DelCompare <T> del) { T max = nums[0]; for (int i = 0; i < nums.Length; i++) { //传一个比较的方法 if (del(max, nums[i]) < 0) { max = nums[i]; } } return(max); }
/// <summary> /// 冒泡排序 /// BubbleSort<int>(arr, (int t1, int t2) =>{return t1 - t2;}); /// </summary> public static void BubbleSort <T>(T[] arr, DelCompare <T> del) { for (int i = 0; i < arr.Length - 1; i++) { for (int j = 0; j < arr.Length - 1 - i; j++) { if (del(arr[j], arr[j + 1]) > 0) { T temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } }
/// <summary> /// 直接插入算法 稳定排序 /// InsetSort<int>(arr, (int t1, int t2) =>{return t1 - t2;}); /// </summary> public static void InsetSort <T>(T[] arr, DelCompare <T> del) { //首先从第二个元素开始遍历 for (int i = 1; i < arr.Length; i++) { int j = i - 1; T temp = arr[i]; //因为当前数的左边都已是排序好的数列,因此无需当前数与左边数列每个都进行比较,只要某个数比当前数小,则剩下未比较的数也一定比当前数小 while (j >= 0 && del(arr[j], temp) > 0) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = temp; } }
//从小到大的排序 private static void Sort(object[] arr, DelCompare del) { //冒泡的趟数 for (int i = 0; i < arr.Length - 1; i++) { //两两比较的次数 for (int j = 0; j < arr.Length - 1 - i; j++) { if (del(arr[j], arr[j + 1]) > 0) { object tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } } }
/// <summary> /// 简单选择排序 不稳定排序 /// SelectSort<int>(arr, (int t1, int t2) =>{return t1 - t2;}); /// </summary> public static void SelectSort <T>(T[] arr, DelCompare <T> del) { for (int i = 0; i < arr.Length - 1; i++) { //记录最小值索引 int minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (del(arr[minIndex], arr[j]) > 0) { minIndex = j; } } if (minIndex != i) { T temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } }
private static int Division <T>(T[] arr, int left, int right, DelCompare <T> del) { while (left < right) { T num = arr[left]; //将首元素作为枢轴 if (del(num, arr[left + 1]) > 0) { arr[left] = arr[left + 1]; arr[left + 1] = num; left++; } else { T temp = arr[right]; arr[right] = arr[left + 1]; arr[left + 1] = temp; right--; } } return(left); //指向的此时枢轴的位置 }
public void Invoke() { ////对整数排序 //object[] arr = { 6, 7, 4, 1, 5 }; //DelCompare del = IntCompare; ////调用排序的方法 //Sort(arr, del); //foreach (object item in arr) //{ // Console.WriteLine(item); //} ////对字符串排序 //object[] arr1 = { "123", "ab", "1", "abcded" }; //DelCompare del1 = StringCompare; //Sort(arr1, del1); //foreach (object item in arr1) //{ // Console.WriteLine(item); //} //对Person排序 object[] per = { new Person("laoyang", 18), new Person("laosu", 17), new Person("laozou", 16) }; DelCompare del = PersonCompare; Sort(per, del); foreach (Person item in per) { Console.WriteLine(item.Age); } }