(入门)C#中的常用排序算法——冒泡排序(其一)

(感谢亲爱的读者朋友,制作不易,嫖者安康)

        在茫茫的代码大陆上,存在着许多排序算法。但在这些算法中,有三个扛把子算法,它们是:

                冒泡排序

                插入排序

                选择排序

        现在,先来介绍冒泡排序

正式开始

默认从小到大开始排序(从大到小的思路其实差不多,主要是我实在是太懒惰,聪明的读者肯定会写哒)

        冒泡排序,重复的、有方向性的遍历数组中的每一个元素,每一次比较其中的两个相邻元素,将其中较为大的元素浮到后面去。以此类推,重复排序完数组中的每一个元素后,数组便被Sort完毕。

        很简单,对不对……

        那就让我们来整理一下代码思路

代码思路

我们先假设存在一个无序的数组M[1,2,3,4,......,n-1,n] 

        首先是初始状态:

                混乱、无序、无从下手。

        接着是开始第一次冒泡:

                从后往前有方向性的依次比较两个元素的大小,即:

                比较

                        ( M[n] , M[n-1] ) , ( M[n-1] , M[n-1] ) ...... ( M[3] , M[2] ) , ( M[2], M[1] )   就像这样去比较

                同时 

                         若存在:M[k+1] < M[k] ,则交换它们的位置;反之,就不甩它,继续下一组冒泡。                

        那,聪明的,你知道吗,要进行多少次冒泡呢?

        n-1 次冒泡。

        

        没错,在第二次冒泡时,原来的无序数组M[1,2,3,4,......,n-1,n]已经摇身一变成为了M[1]是原数组的最小值与无序数组M[2,3,4,......,n-1,n]。

        最后,会在第 n-1 次冒泡,原来的无序数组变为有序数组,Bubble Sort 完毕。

        康康这个动画(网上有的,自由转载):

        (入门)C#中的常用排序算法——冒泡排序(其一)_第1张图片

        是不是一下子就懂了 

        关于这个算法的时间复杂度,我是真的不想写了。推荐大家去康康这位博主“道为骨”的大O算法介绍吧。

代码介绍

        (其实大家都是来这里嫖代码的,对吧)

        紧接着,给大家上一段冒泡排序的代码

public void Bubble_sort(int[] List)
        {
            int i, t=1, Temp;//t是目前冒泡的次数,就是小于n-1;i是数组中的第几位元素;Temp是中间替换量,大家都懂哒
            bool Finish = false;//康康你到底冒泡冒完没有,刚开始是没有,所以判为F
            while((t List[i + 1])
                    {
                        Finish = false;
                        Temp = List[i];
                        List[i] = List[i + 1];
                        List[i + 1] = Temp;//这里就是换数据的地方,其实可以简单化的,但是啊,我就是懒惰,聪明的,你,会写的。
                    }
                }
                t++;
            }

        }

还不过瘾的话,我把它的排序效果放出来哈

这里是项目代码:

using System;

namespace Bubble_Sort
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] Example = new int[] {-99,-4323,23,42,8848,114514,234 };
            Bubble bubble = new Bubble();
            bubble.Bubble_sort(Example);
            foreach(var item in Example)
            {

                Console.Write(item+"," );
                
            }
            Console.Read();
        }

    }

    public class Bubble
    {
        public void Bubble_sort(int[] List)
        {
            int i, t=1, Temp;//t是目前冒泡的次数,就是小于n-1;i是数组中的第几位元素;Temp是中间替换量,大家都懂哒
            bool Finish = false;//康康你到底冒泡冒完没有,刚开始是没有,所以判为F
            while((t List[i + 1])
                    {
                        Finish = false;
                        Temp = List[i];
                        List[i] = List[i + 1];
                        List[i + 1] = Temp;//这里就是换数据的地方,其实可以简单化的,但是啊,我就是懒惰,聪明的,你,会写的。
                    }
                }
                t++;
            }

        }
    }
}

 这里是结果:

        -4323,-99,,23,42,234,8848,114514,

OK啦,冒泡算法就给同志们说完了,很感谢大家的阅读(嘿嘿,点赞,嘿嘿,打赏)。

此外,另外两个算法我会给大家普及哒。

大家还是可以去看看大O表示法,去看看这个冒泡算法的时间复杂度,这个还是要考虑机效哒。

新人最好不要嫖代码哦,自己手打,一两遍就学会了。

制作不易,嫖者安康,转载给我说一声喔!!!

你可能感兴趣的:(c#,开发语言,排序算法,算法)