经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C#冒泡排序算法
来源:cnblogs  作者:追逐时光者  时间:2023/7/31 9:11:24  对本文有异议

冒泡排序实现原理

冒泡排序是一种简单的排序算法,其原理如下:

  1. 从待排序的数组的第一个元素开始,依次比较相邻的两个元素。

  2. 如果前面的元素大于后面的元素(升序排序),则交换这两个元素的位置,使较大的元素“冒泡”到右侧。

  3. 继续比较下一对相邻元素,重复步骤2,直到遍历到数组的倒数第二个元素。此时,最大的元素会被交换到数组的最后一个位置。

  4. 针对剩余尚未排序的元素,重复步骤1到步骤3。每次遍历过程中,最大的元素都会被放置到正确的位置上。

  5. 持续以上操作,直到所有元素都按照指定的顺序排列为止。

冒泡排序图解

冒泡排序实现的2种方式

双重循环方式实现冒泡排序

  1.         /// <summary>
            /// 双重循环方式实现冒泡排序
            /// </summary>
            public static void BubbleSort()
            {
                int[] arr = { 1, 8, 9, 5, 6, 2, 3, 4, 7 };
                int arrLength = arr.Length;
                for (int i = 0; i < arrLength - 1; i++)
                {
                    for (int j = 0; j < arrLength - i - 1; j++)
                    {
                        if (arr[j] > arr[+ 1])
                        {
                            //交换arr[j]和arr[j+1]的值
                            int temp = arr[j];
                            arr[j] = arr[+ 1];
                            arr[+ 1] = temp;
                        }
                    }
                }

                Console.WriteLine("排序后结果:" + string.Join(", ", arr));
            }

递归方式实现冒泡排序

  1.         /// <summary>
            /// 递归方式实现冒泡排序
            /// </summary>
            /// <param name="arr">arr</param>
            /// <param name="arrLength">arrLength</param>
            public static void RecursiveBubbleSort(int[] arr, int arrLength)
            {
                if (arrLength == 1)
                    return;

                for (int i = 0; i < arrLength - 1; i++)
                {
                    if (arr[i] > arr[+ 1])
                    {
                        //交换arr[i]和arr[i+1]的值
                        int temp = arr[i];
                        arr[i] = arr[+ 1];
                        arr[+ 1] = temp;
                    }
                }

                RecursiveBubbleSort(arr, arrLength - 1);
            }

            public static void RecursiveBubbleSortRun()
            {
                int[] arr = { 1, 8, 9, 5, 6, 2, 3, 4, 7 };
                int arrLength = arr.Length;
                RecursiveBubbleSort(arr, arrLength);
                Console.WriteLine("排序后结果:" + string.Join(", ", arr));
            }

总结

冒泡排序的名称来源于元素比较过程中,较大的元素会逐渐向右“冒泡”到正确的位置上。它的时间复杂度为O(n^2),在实际应用中适用于数据规模较小的情况。在实际应用中,我们需要根据具体情况选择合适的实现方式来平衡代码的可读性和排序效率。同时,如果对排序算法的效率要求较高,可以考虑使用其他更高效的排序算法,如快速排序或归并排序。

参考文章

https://blog.csdn.net/qq_45019143/article/details/109961460

加入DotNetGuide技术交流群

在DotNetGuide技术交流群中可以结识更多志同道合的开发者,甚至可能与其他开发者合作完成有趣的项目。通过这个群组,我们希望能够搭建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值。

欢迎加入DotNetGuide技术交流群??

原文链接:https://www.cnblogs.com/Can-daydayup/p/17592218.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号