算法_冒泡排序_笔记(二)

_冒泡排序:

   

    1、算法介绍:冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序):
  是一种简单的排序算法,名字由来是因为 最小或最大 的元素会经由交换慢慢“浮”到数列的顶端。
    2、算法分析:
  稳定性:稳定 
  时间复杂度:O(n^2)
  空间复杂度:O(1)
  
 3、算法特点
    A、原理易理解,容易编程实现
    B、具有稳定性
   
 4、算法实现描述
    比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。
    在这一点,最后的元素应该会是最大的数。
    针对所有的元素重复以上的步骤,除了最后一个。
    持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
   
 5、代码实现
/*----C++代码原型----*/
void BubbleSort(int* pArray,int length)
        {
            for (int i=0;i< length-1;i++)
            {
                for (int j=0;j< length - i - 1;j++)
                {
                    if (pArray[j] > pArray[j + 1])
                    {
                        int temp = pArray[j];
                        pArray[j] = pArray[j + 1];
                        pArray[j + 1] = temp;
                    }
                }
            }
        }

 


        
 
/*----C#代码实现------*/
 
class Program
{
    static void Main(string[] args)
    {
        //定义需要交换的数组
        int[] ay = new int[] { 1,3, 4, 2, 5, 7, 6, 10, 9, 8 };
        //冒泡排序
        BubbleSort(ay);

        for(int i =0;i<ay.Length;++i)
        {
            Console.Write(ay[i]+"  ");
        }
        

        Console.ReadKey();
    }

    //冒泡算法函数
    public static void BubbleSort(int[] _ay)
    {
        //用于存放交换数值的临时变量
        int a = 0;
        //使用2层循环-让前一个数值跟后一个数值进行交换。
        for(int i = 0; i < _ay.Length-1;++i)
        {
            for(int j = 0;j<_ay.Length-i-1;++j)
            {
                //如果前一个比后一个大则交换,反过来同理。
                if (_ay[j] > _ay[j + 1]) 
                {
                    a = _ay[j];
                    _ay[j] = _ay[j + 1];
                    _ay[j + 1] = a;
                }
            }
            
        }
    }

}

 

 
 
 
 
 
 

posted on 2020-06-01 14:07  嗜睡的熊大  阅读(127)  评论(0编辑  收藏  举报

导航