C#冒泡排序算法

打印 上一主题 下一主题

主题 829|帖子 829|积分 2487

冒泡排序实现原理

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

  • 从待排序的数组的第一个元素开始,依次比较相邻的两个元素。
  • 如果前面的元素大于反面的元素(升序排序),则互换这两个元素的位置,使较大的元素“冒泡”到右侧。
  • 继承比较下一对相邻元素,重复步骤2,直到遍历到数组的倒数第二个元素。此时,最大的元素会被互换到数组的末了一个位置。
  • 针对剩余尚未排序的元素,重复步骤1到步骤3。每次遍历过程中,最大的元素都会被放置到精确的位置上。
  • 持续以上操作,直到所有元素都按照指定的顺序排列为止。
冒泡排序图解


冒泡排序实现的2种方式

双重循环方式实现冒泡排序
  1. /// <summary>
  2.                 /// 双重循环方式实现冒泡排序
  3.                 /// </summary>
  4.                 public static void BubbleSort()
  5.                 {
  6.                         int[] arr = { 1, 8, 9, 5, 6, 2, 3, 4, 7 };
  7.                         int arrLength = arr.Length;
  8.                         for (int i = 0; i < arrLength - 1; i++)
  9.                         {
  10.                                 for (int j = 0; j < arrLength - i - 1; j++)
  11.                                 {
  12.                                         if (arr[j] > arr[j + 1])
  13.                                         {
  14.                                                 //交换arr[j]和arr[j+1]的值
  15.                                                 int temp = arr[j];
  16.                                                 arr[j] = arr[j + 1];
  17.                                                 arr[j + 1] = temp;
  18.                                         }
  19.                                 }
  20.                         }
  21.                         Console.WriteLine("排序后结果:" + string.Join(", ", arr));
  22.                 }
复制代码
递归方式实现冒泡排序
  1.                 /// <summary>
  2.                 /// 递归方式实现冒泡排序
  3.                 /// </summary>
  4.                 /// <param name="arr">arr</param>
  5.                 /// <param name="arrLength">arrLength</param>
  6.                 public static void RecursiveBubbleSort(int[] arr, int arrLength)
  7.                 {
  8.                         if (arrLength == 1)
  9.                                 return;
  10.                         for (int i = 0; i < arrLength - 1; i++)
  11.                         {
  12.                                 if (arr[i] > arr[i + 1])
  13.                                 {
  14.                                         //交换arr[i]和arr[i+1]的值
  15.                                         int temp = arr[i];
  16.                                         arr[i] = arr[i + 1];
  17.                                         arr[i + 1] = temp;
  18.                                 }
  19.                         }
  20.                         RecursiveBubbleSort(arr, arrLength - 1);
  21.                 }
  22.                 public static void RecursiveBubbleSortRun()
  23.                 {
  24.                         int[] arr = { 1, 8, 9, 5, 6, 2, 3, 4, 7 };
  25.                         int arrLength = arr.Length;
  26.                         RecursiveBubbleSort(arr, arrLength);
  27.                         Console.WriteLine("排序后结果:" + string.Join(", ", arr));
  28.                 }
复制代码
总结

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表