冒泡算法

代码
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());
        }
    }
}

冒泡排序算法的最好情况是记录已全部排好序,这时,循环n-1次,每次循环都因没有数据交换而退出。因此,冒泡排序算法在最好情况下的时间复杂度为O(n)。冒泡排序算法的最坏情况是记录全部逆序存放,这时,循环n-1次,总比较次数为:
总的移动次数为比较次数的3倍,因为被进行一次比较,需要进行3次移动。因此,冒泡排序算法在最坏情况下的时间复杂度为O(n2)。
冒泡排序算法只需要一个辅助空间用于交换记录,所以,冒泡排序算法是一种稳定的排序方法。

posted @ 2010-04-28 11:25  科睿思博  阅读(224)  评论(0编辑  收藏  举报