冒泡排序
排序原理:
1、比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置
2、对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。
源码
public class BubbleSort
{
public static List<int[]> result=new List<int[]>();
/// <summary>
/// 冒泡排序
/// </summary>
/// <param name="a"></param>
public static void sort(int[] a)
{
result.Clear();
result.Add((int[])a.Clone());
for (int i = 0; i < a.Length-1; i++)
{
for (int j = i; j < a.Length; j++)
{
if (compareTo(a[i], a[j]))
{
exec(a,i,j);
result.Add((int[])a.Clone());
}
}
}
}
/// <summary>
/// 交换两个位置的元素
/// </summary>
/// <param name="a"></param>
/// <param name="i"></param>
/// <param name="j"></param>
private static void exec(int[] a, int i, int j)
{
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
/// <summary>
/// 判断两个元素大小
/// </summary>
/// <param name="i"></param>
/// <param name="j"></param>
/// <returns></returns>
private static bool compareTo(int i, int j)
{
return i > j;
}
}
演示
时间复杂度:
双层for循环,时间复杂度为O(N^2).
优点:
算法简单
缺点:
执行效率较慢