C# 常见排序算法

 //冒泡排序算法
        static void Main(string[] args)
        {
            int[] array = { 2, 3, 7, 1, 4, 9, 6, 8, 10 };
            var newarrry = BubbleSort(array);
            for (int i = 0; i < newarrry.Length; i++)
            {
                Console.WriteLine(newarrry[i]);
            }
            Console.Read();
        }

        public static int[] BubbleSort(int[] array)
        {
            int temp = 0;
            for (int i = 0; i < array.Length - 1; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    //if (array[j] < array[i])//冒泡升序
                    //{
                    //    temp = array[i];
                    //    array[i] = array[j];
                    //    array[j] = temp;
                    //}

                    if (array[j] > array[i])//冒泡降序
                    {
                        temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
            return array;
        }

        //选择排序算法
        static void Main(string[] args)
        {
            int[] array = { 2, 3, 7, 1, 4, 9, 6, 8, 10 };
            var newarrry = SelectSort(array);
            for (int i = 0; i < newarrry.Length; i++)
            {
                Console.WriteLine(newarrry[i]);
            }
            Console.Read();
        }

        public static int[] SelectSort(int[] array)
        {
            int temp = 0;
            int minindex = 0;
            for (int i = 0; i < array.Length - 1; i++)
            {
                minindex = i;
                for (int j = i; j < array.Length; j++)
                {
                    if (array[j] < array[minindex])//每次循环选择最小的数插入到数组中
                    {
                        minindex = j;
                    }
                }
                temp = array[minindex];
                array[minindex] = array[i];
                array[i] = temp;
            }
            return array;
        }

        //插入排序算法
        static void Main(string[] args)
        {
            int[] array = { 2, 3, 7, 1, 4, 9, 6, 8, 10 };
            var newarrry = InsertSort(array);
            for (int i = 0; i < newarrry.Length; i++)
            {
                Console.WriteLine(newarrry[i]);
            }
            Console.Read();
        }

        public static int[] InsertSort(int[] array)
        {

            for (int i = 1; i < array.Length; i++)
            {
                int t = array[i];
                int j = i;
                while ((j > 0) && (array[j - 1] > t))
                {
                    array[j] = array[j - 1];
                    j--;
                }
                array[j] = t;
            }
            return array;
        }


        //希尔排序算法
        static void Main(string[] args)
        {
            int[] array = { 2, 3, 7, 1, 4, 9, 6, 8, 10 };
            var newarrry = ShellSort(array);
            for (int i = 0; i < newarrry.Length; i++)
            {
                Console.WriteLine(newarrry[i]);
            }
            Console.Read();
        }

        public static int[] ShellSort(int[] array)
        {
            int inc;
            for (inc = 1; inc <= array.Length / 9; inc = 3 * inc + 1) ;
            for (; inc > 0; inc /= 3)
            {
                for (int i = inc + 1; i <= array.Length; i += inc)
                {
                    int t = array[i - 1];
                    int j = i;
                    while ((j > inc) && (array[j - inc - 1] > t))
                    {
                        array[j - 1] = array[j - inc - 1];
                        j -= inc;
                    }
                    array[j - 1] = t;
                }
            }
            return array;
        }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。