Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 /// <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);
     }
 }
Beispiel #4
0
 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;
 }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        //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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        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);
        }
Beispiel #15
0
 /// <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;
             }
         }
     }
 }
Beispiel #16
0
 /// <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;
     }
 }
Beispiel #17
0
 //从小到大的排序
 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;
             }
         }
     }
 }
Beispiel #18
0
 /// <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;
         }
     }
 }
Beispiel #19
0
    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); //指向的此时枢轴的位置
    }
Beispiel #20
0
        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);
            }
        }