一、算法原理

  冒泡排序算法的运作如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

二、算法分析

  冒泡排序最好的时间复杂度为O(n),算法的平均时间复杂度为O(n*n)。

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

三、算法实现

public class BubbleSort
{
public void Sort(int[] list)
{
int n = list.Length;
int j = ;
bool flag;//排序结束标志,一次比较后没有元素交换则排序结束
for (int i = ; i < n - ; i++)
{
flag = false;
//每一趟排序后最后的元素都是最大,所以下一趟比较不需要再比较最后一个元素
for (int k = ; k < n - j; k++)
{
if (list[k] > list[k + ])
{
int temp = list[k];
list[k] = list[k + ];
list[k + ] = temp;
flag = true;
}
}
if (!flag)
break;
j++;
}
}
}

最新文章

  1. Hadoop Shell命令大全
  2. Server.MapPath()
  3. iOS--NSTimer设置定时器的两种方法
  4. spring 初始化之后执行的方法
  5. C语言中一个替换 strcpy的极好的方法
  6. iOS-----类和对象,nil/Nil/NULL的区别
  7. Android中多表的SQLite数据库(译)
  8. WebApi接口传参不再困惑:传参详解
  9. swift 密码由6-16数字和字母组合组成
  10. 解决Table不继承父节点的属性的方法
  11. 基于SurfaceView的可拖动视频控件
  12. Luogu5205 【模板】多项式开根(NTT+多项式求逆)
  13. STM32F1-GPIO的操作
  14. valueof toString
  15. 027-Session状态提供程序
  16. 微信小程序实现部分双向数据绑定(为input、picker、textarea编写统一的更新数据逻辑)
  17. boot空间不足
  18. C# 泛型分组和Linq分组的异同
  19. 在Windows下食用Linux工作环境(WSL+cmder)
  20. 杂项:ORM

热门文章

  1. HDU_2191_多重背包
  2. Python 进行目标检测
  3. 如何在kalilinux上安装docker
  4. sed命令入门
  5. Java并发之Exchanger类
  6. java8 Stream API笔记
  7. Thread类的interrupted方法和isInterrupted方法的区别
  8. 几个点认识Nginx服务器
  9. h5笔记1
  10. idea创建基于maven的web项目