当前位置:   article > 正文

C#之冒泡排序_c#冒泡排序

c#冒泡排序

冒泡排序介绍

冒泡排序,Bubble Sort      一个简单且常用的排序算法。因最大或最小的元素会经过交换慢慢出现在数列顶端,好似元素冒出来一样,得名“冒泡排序”。

冒泡排序原理

1.比较相邻的元素,若第一个比第二个大则交换他们两个。

2.对每一组相邻的元素做同样的工作(从开始的第一对到最后的最后一对)。

3.针对除最后一个元素外的所有元素重复以上的步骤。

4.重复对未定位到合适位置的元素操作上述步骤直至排序完成。

以上为升序原理,降序原理等同于升序原理。)

冒泡排序分析

冒泡排序最好的时间复杂度为O(n);

此时数组本身有序,只需要一轮即可完成冒泡排序。因此时间复杂度为O(n)

冒泡排序最坏的时间复杂度为O(n*n);

此时数组本身为逆序,需要n轮完成冒泡排序。因此时间复杂度为O(n*n)

冒泡排序的平均时间复杂度为O(n*n)。

由于最坏时间复杂度分析,平均时间复杂度为O(n*n)

冒泡排序是稳定的排序算法。

因为在交换中我们只交换两个元素,元素相等时不变,因此相等元素在排序前后相对位置不会发生变化,所以是稳定的排序算法。

冒泡排序C#实现

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Bubble_Sort
  7. {
  8. internal class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. int[] data = new int[8];
  13. Console.WriteLine("原数组为:");
  14. Random random = new Random();
  15. for (int i = 0; i < data.Length; i++)
  16. {
  17. data[i] = random.Next(1,500);
  18. Console.Write(data[i] + " ");
  19. }
  20. Console.WriteLine();
  21. Console.WriteLine("升序后数组为:");
  22. // 升序
  23. int temp;
  24. for(int i = 0; i < data.Length; i++)
  25. {
  26. bool flag = true;
  27. for(int j = 0; j < data.Length - 1 - i; j++)
  28. {
  29. if (data[j] > data[j + 1])
  30. {
  31. temp = data[j + 1];
  32. data[j + 1] = data[j];
  33. data[j] = temp;
  34. flag = false;
  35. }
  36. }
  37. if (flag)
  38. {
  39. break;
  40. }
  41. }
  42. for(int i = 0; i < data.Length; i++)
  43. {
  44. Console.Write(data[i] + " ");
  45. }
  46. Console.ReadLine();
  47. }
  48. }
  49. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/513261
推荐阅读
相关标签
  

闽ICP备14008679号