例子说冒泡排序

来源:互联网 发布:沪港通资金数据 编辑:程序博客网 时间:2024/06/06 18:36


一、原理:


       1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

       2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

       3.针对所有的元素重复以上的步骤,除了最后一个。

       4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

       如下例中65相比较,因为它们不相等,所以需要进行交换位置,把65进行交换,然后再进行下一对的比较,63,也要进行交换位置,以此类推,直到最后一个数是最大的,每一趟排序都是最大的浮出来,就像金鱼在水中缺氧就会浮到水面,嘴巴一张一闭进行呼吸而形成的吐泡泡一样,总是会不断的有泡泡出来连成一串,很好看。


二、C#中的冒泡排序


例:把{ 6,5,3,1,8,7,2,4 }这个数组按从小到大进行排列:

         

/***********************************************      '类 名 称:Bubble      '命名空间:BubbleTest      '创建时间:2016年3月30日       '作    者:Q      '说    明:      '版 本 号:v1.0.0 ************************************************/using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace BubbleTest{    class BubbleOne    {        //创建一个排序的数组        static List<int> list = new List<int>() { 6, 5, 3, 1, 8, 7, 2, 4 };        static void Main(string[] args)        {            Bubble();            PrintList();          }        static void Bubble()        {            int temp = 0;            for (int i = list.Count; i > 0; i--)  //数组有N个数,那么用N-1次大循环就可以排完            {                for (int j = 0; j < i - 1; j++)     //从数组下标0处开始遍历 i - 1 是刨除已经排好的大数                {                    if (list[j] > list[j + 1])     //相邻两个数进行比较,如果前面的数大于后面的数,则将这相邻的两个数进行互换                    {                        temp = list[j];                        list[j] = list[j + 1];                        list[j + 1] = temp;                    }                }                PrintList();    //发生过互换,打印出来            }        }        private static void PrintList()        {            foreach (var item in list)            {                Console.Write(string.Format("{0} ", item));            }            Console.ReadLine();        }           }}

     最后输出的结果是:

                      


    冒泡排序动态图:

                   

三、算法的稳定性:


    如果相邻的两个元素是相等的,那咱们也不会无聊到让它们交换位置;如果两个相等的元素没有相邻,那么即使通过前面的两两交换之后两个相邻在一起了,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。




0 0
原创粉丝点击