C#冒泡排序算法

举报
追逐时光者 发表于 2023/11/25 10:20:05 2023/11/25
【摘要】 冒泡排序实现原理冒泡排序是一种简单的排序算法,其原理如下:从待排序的数组的第一个元素开始,依次比较相邻的两个元素。如果前面的元素大于后面的元素(升序排序),则交换这两个元素的位置,使较大的元素“冒泡”到右侧。继续比较下一对相邻元素,重复步骤2,直到遍历到数组的倒数第二个元素。此时,最大的元素会被交换到数组的最后一个位置。针对剩余尚未排序的元素,重复步骤1到步骤3。每次遍历过程中,最大的元素都...

学算法.png

冒泡排序实现原理

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

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

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

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

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

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

冒泡排序图解

冒泡排序.gif

冒泡排序实现的2种方式

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

        /// <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[j + 1])
                    {
                        //交换arr[j]和arr[j+1]的值
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }

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

递归方式实现冒泡排序

        /// <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[i + 1])
                {
                    //交换arr[i]和arr[i+1]的值
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。