C#——冒泡排序

前言

C#中常见的排序方法有:冒泡排序,快速排序,插入排序,选择排序、堆排序以及归并排序。虽然都没怎么实践操作过,但是也有耳闻。今天主要讲这里面最常见的冒泡排序。

冒泡排序

【描述】如下图:对于学生科的同学一看就这点,这是个烧杯里面有很多的液体,需要用玻璃棒按照一个方向,均匀的搅拌。而这个图中展示的是泡泡从下到上越来越大,知道到达水面破裂。

【概念】冒泡排序也就是讲一组需要排序的数,进行从小到大,或从大到小的排列。

计算机的排序没有人那么灵活,冒泡排序突出的是顺序:

【例子】如果一组数1 2 3 5 4 要从大到小排列

他要从最左边开始,把第一个数和其他的数都比较一遍,直到没有比它还小的数为止

2 3 5 4 1  第一轮进行了4次比较1和2 3  5 4都比较了一遍

3 5 4 2 1 第二轮进行了3次比较2 和3 5 4 1都比较了一遍

5 4 3 2 1 第三轮进行了2次比较3 和5 4 比较了一遍

最后一轮5 和4 比较了1次 5比4 大没有动 

所以:5个数,最多要进行4+3+2+1次比较


            for (int j = 1; j <= numArray.Length-1; j++)//冒泡排序方法
            {
                for (int i = 0; i < numArray.Length - 1; i++)//让下面的for循环执行numArray.Length-1次
                {
                    if (numArray[i + 1] < numArray[i]) //numArray[i]与numArray[i+1]作比较,将大的放在后面
                    {
                        int temp = numArray[i];
                        numArray[i] = numArray[i + 1];
                        numArray[i + 1] = temp;//实现排序的步骤
                    }
                    n++;//计算机总的循环次数
                }

优化

            for (int j = 1; j <= numArray.Length-1; j++)//冒泡排序方法
            {
                for (int i = 0; i < numArray.Length - j; i++)//让下面的for循环执行次数减少
                {
                    if (numArray[i + 1] < numArray[i]) //numArray[i]与numArray[i+1]作比较,将大的放在后面
                    {
                        int temp = numArray[i];
                        numArray[i] = numArray[i + 1];
                        numArray[i + 1] = temp;//实现排序的步骤
                    }
                    n++;//计算机总的循环次数
                }

或者

            for (int j = 1; j <= numArray.Length-1; j++)//冒泡排序方法
            {   numArray-=1
                for (int i = 0; i < numArray.Length; i++)//让下面的for循环执行次数减少
                {
                    if (numArray[i + 1] < numArray[i]) //numArray[i]与numArray[i+1]作比较,将大的放在后面
                    {
                        int temp = numArray[i];
                        numArray[i] = numArray[i + 1];
                        numArray[i + 1] = temp;//实现排序的步骤
                    }
                    n++;//计算机总的循环次数
                }

猜你喜欢

转载自blog.csdn.net/xml1996/article/details/80875598
今日推荐