当前位置: 移动技术网 > IT编程>开发语言>.net > 实现泛型数组的冒泡排序算法

实现泛型数组的冒泡排序算法

2017年12月28日  | 移动技术网IT编程  | 我要评论

女子买房发现少露台,济宁论坛,开讲啦汪涵

public static class BubbleSortTool
    {
        public static void BubbleSort<T>(this T[] array, AscendingorDescending ascendingorDescending) where T:IComparable
        {
            switch (ascendingorDescending)
            {
                case AscendingorDescending.ascending:
                    {
                        while (!SortCompleteChecK(array, AscendingorDescending.ascending))
                        {
                            for (int i = 0; i < (array.Length - 1); i++)
                            {
                                if (array[i].CompareTo(array[i + 1]) > 0)
                                {
                                    T temp = array[i];
                                    array[i] = array[i + 1];
                                    array[i + 1] = temp;
                                }
                            }
                        }
                    }
                    break;
                case AscendingorDescending.descending:
                    {
                        while (!SortCompleteChecK(array, AscendingorDescending.ascending))
                        {
                            for (int i = 0; i < (array.Length - 1); i++)
                            {
                                if (array[i].CompareTo(array[i + 1]) < 0)
                                {
                                    T temp = array[i];
                                    array[i] = array[i + 1];
                                    array[i + 1] = temp;
                                }
                            }
                        }
                    }
                    break;
                default:
                    break;
            }
        }

        private static bool SortCompleteChecK<T>(T[] array, AscendingorDescending ascendingorDescending) where T : IComparable
        {
            switch (ascendingorDescending)
            {
                case AscendingorDescending.ascending:
                    {
                        for (int i = 0; i < (array.Length-1); i++)
                        {
                            if (array[i].CompareTo(array[i + 1]) >0  )
                            {
                                return false;
                            }
                        }
                        return true;
                    }
                    break;
                case AscendingorDescending.descending:
                    {
                        for (int i = 0; i < (array.Length - 1); i++)
                        {
                            if (array[i].CompareTo(array[i + 1]) < 0)
                            {
                                return false;
                            }
                        }
                        return true;
                    }
                    break;
                default:
                    { throw new Exception(); }
                    break;
            }

        }

        public enum AscendingorDescending
        {
            ascending,descending
        }

        public static void Print<T>(this T[] array)
        {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < array.Length; i++)
            {
                sb.Append(array[i]);
                sb.Append(" ");
            }
            Console.WriteLine(sb);
        }
        public static void Print<T>(this T[] array,String prompt)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(prompt);
            for (int i = 0; i < array.Length; i++)
            {
                sb.Append(array[i]);
                sb.Append(" ");
            }
            Console.WriteLine(sb);
        }
    }

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网