冒泡算法
代码
using System;
using System.Collections.Generic;
public class MyClass
{
public static void Main()
{
int[] data={1,2,3,4,5,6,7,8,9};
BubbleSort(data);
Console.ReadLine();
}
public static void BubbleSort(int[] data)
{
int temp;
for(int i=0;i<data.Length;i++)
{
bool result=true;
for(int j=data.Length-1;j>i;j--)
{
if(data[j-1]>data[j])
{
result=false;
temp=data[j-1];
data[j-1]=data[j];
data[j]=temp;
}
}
if(result)
{
break;
}
}
for(int i=0;i<data.Length;i++)
{
Console.WriteLine(data[i].ToString());
}
}
}
using System.Collections.Generic;
public class MyClass
{
public static void Main()
{
int[] data={1,2,3,4,5,6,7,8,9};
BubbleSort(data);
Console.ReadLine();
}
public static void BubbleSort(int[] data)
{
int temp;
for(int i=0;i<data.Length;i++)
{
bool result=true;
for(int j=data.Length-1;j>i;j--)
{
if(data[j-1]>data[j])
{
result=false;
temp=data[j-1];
data[j-1]=data[j];
data[j]=temp;
}
}
if(result)
{
break;
}
}
for(int i=0;i<data.Length;i++)
{
Console.WriteLine(data[i].ToString());
}
}
}
冒泡排序算法的最好情况是记录已全部排好序,这时,循环n-1次,每次循环都因没有数据交换而退出。因此,冒泡排序算法在最好情况下的时间复杂度为O(n)。冒泡排序算法的最坏情况是记录全部逆序存放,这时,循环n-1次,总比较次数为:
总的移动次数为比较次数的3倍,因为被进行一次比较,需要进行3次移动。因此,冒泡排序算法在最坏情况下的时间复杂度为O(n2)。
冒泡排序算法只需要一个辅助空间用于交换记录,所以,冒泡排序算法是一种稳定的排序方法。