当前位置: 首页 > news >正文

C#冒泡排序算法

冒泡排序实现原理

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

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

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

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

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

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

冒泡排序图解

图片

冒泡排序实现的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

http://www.lryc.cn/news/313447.html

相关文章:

  • 【前端寻宝之路】总结学习使用CSS的引入方式
  • Python中输入输出函数input和print用法
  • 简单认识Linux
  • javascript正则深入
  • React-封装自定义Hook
  • Spark实战-基于Spark日志清洗与数据统计以及Zeppelin使用
  • Springboot中Redis的配置使用
  • 【node版本问题】运行项目报错 PostCSS received undefined instead of CSS string
  • Spring揭秘:BeanDefinitionRegistry应用场景及实现原理!
  • 蓝桥杯(3.5)
  • 434G数据失窃!亚信安全发布《勒索家族和勒索事件监控报告》
  • 7-18 彩虹瓶(Python)
  • php使用ElasticSearch
  • wpf prism左侧抽屉式菜单
  • 揭秘AI新纪元:近期人工智能发展的惊人突破与未来展望
  • C语言基础练习——Day01
  • 用云手机进行舆情监测有什么作用?
  • 神经网络(neural network)
  • 微信小程序用户登陆和获取用户信息功能实现
  • 2024年3月8日 晨会汇报
  • 去电脑维修店修电脑需要注意什么呢?装机之家晓龙
  • 国家妇女节放假是法定的假日
  • Pytorch线性回归实现(Pycharm实现)
  • 2024新疆专升本考试报名教程详解
  • unicloud 云数据库概念及创建一个云数据库表并添加记录(数据)
  • 想交易盈利?Anzo Capital昂首资本发现了一本畅销书
  • 美国站群服务器租用需要考虑哪些关键点
  • 如何构建Hive数据仓库Hive 、数据仓库的存储方式 以及hive数据的导入导出
  • 【Linux】软件管理器yum和编辑器vim
  • 怎么才能确定螺栓是拧紧了——SunTorque智能扭矩系统