最新文章:

首页 笔记

C#代码:几个数组排序算法(冒泡丨选择丨直接插入)

发布时间:2016年07月03日 评论数:0 阅读数:1094

    冒泡排序:

    大概思想是依次比较相邻的两个数,如果前面的比后面大则交换位置,这样一轮后最大的数就会排在最后面。总共进行[个数-1]轮


            static void Main()
            {
                int[] SortArr = new int[] { 78, 99, 58, 16, 256, 184, 3, 450, 233, 666 };
                Console.WriteLine("待排序列:");
                for(int i = 0; i < SortArr.Length; i++)//循环输出待排序列
                {
                    Console.Write(SortArr[i] + "  ");
                }
                Console.WriteLine();//换行
                for(int i = SortArr.Length - 1; i > 0; i--)//进行个数-1轮排序
                {
                    for(int j = 0; j < i; j++)//比较一轮
                    {
                        if (SortArr[j] > SortArr[j + 1])//交换
                        {
                            int k = SortArr[j];
                            SortArr[j] = SortArr[j + 1];
                            SortArr[j + 1] = k;
                        }
                    }
                }
                Console.WriteLine("排序后:");
                for (int i = 0; i < SortArr.Length; i++)//循环输出排序后序列
                {
                    Console.Write(SortArr[i] + "  ");
                }
            }

    结果:

    maopao.png

    选择排序:

    大概思想是每次在n个元素中选取最小的元素,放在序列的第一位。循环选择n-1次后便完成排序


            static void Main()
            {
                int[] SortArr = new int[] { 111, 33, 58, 16, 69, 184, 9, 888, 233, 120 };
                Console.WriteLine("待排序列:");
                for(int i = 0; i < SortArr.Length; i++)//循环输出待排序列
                {
                    Console.Write(SortArr[i] + "  ");
                }
                Console.WriteLine();//换行
                for (int i = 0; i < SortArr.Length-1; i++)//进行个数-1次轮
                {
                    int min = i;//min用来存放当前最小元素下标
                    for(int j = i + 1; j < SortArr.Length; j++)//依次把当前最小和其他进行比较,最后选出真正最小的
                    {
                        if (SortArr[min] > SortArr[j])
                        {
                            min = j;
                        }
                    }
                    int k = SortArr[min];
                    SortArr[min] = SortArr[i];
                    SortArr[i] = k;
                }
                Console.WriteLine("排序后:");
                for (int i = 0; i < SortArr.Length; i++)//循环输出排序后序列
                {
                    Console.Write(SortArr[i] + "  ");
                }
            }
    结果:


    xuanze.png

    直接插入排序:

    大概思想是将一个元素插入到一个有序序列(只有一个元素=有序序列),得到一个新的有序序列。一个个往里面插,最后整个序列有序


            static void Main()
            {
                int[] SortArr = new int[] { 55, 33, 99, 119, 666, 184, 1, 911, 235, 120 };
                Console.WriteLine("待排序列:");
                for(int i = 0; i < SortArr.Length; i++)//循环输出待排序列
                {
                    Console.Write(SortArr[i] + "  ");
                }
                Console.WriteLine();//换行
                for(int i = 1; i < SortArr.Length; i++)//循环插入
                {
                    int k = SortArr[i];//保存被插入数的值
                    int j = i;
                    while (j > 0 && SortArr[j - 1] > k)
                    {
                        SortArr[j] = SortArr[j - 1];
                        --j;
                    }
                    SortArr[j] = k;
                }
                Console.WriteLine("排序后:");
                for (int i = 0; i < SortArr.Length; i++)//循环输出排序后序列
                {
                    Console.Write(SortArr[i] + "  ");
                }
            }
    结果:


    zhijiecharu.png

二维码加载中...
本文作者:极光萝卜      文章标题: C#代码:几个数组排序算法(冒泡丨选择丨直接插入)
本文地址:http://www.ijglb.com/post/32
版权声明:若无注明,本文皆为“极光萝卜丨某菜鸟的里世界”原创,转载请保留文章出处。