交换排序_1.冒泡排序

来源:互联网 发布:淘宝店铺设计多少钱 编辑:程序博客网 时间:2024/06/07 18:54

交换排序:

交换排序的思想是:通过依次交换逆序的元素实现排序。

冒泡排序:

冒泡排序的基本思想是:从第一个元素开始,依次比较两个相邻的元素,如果两个元素逆序,则进行交换。假设元素中有n个待比较元素,第一趟排序结束后,就会将数组中最大的元素移到数组末尾,即第n个位置,第二趟排序后,就会将次大的元素移动到底n-1个位置,依次类推,经过n-1趟排序后,就构成了一个有序的数组。   这样的排序类似于气泡慢慢向上移动,因此成为冒泡排序。

实现代码:(C#实现)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace maopao
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] a = new int[] {56,22,67,32,59,12,89,26};   //待排序数组
            for (int m = 0; m < a.Length - 1; m++)
            {   //每一趟排序都要把最大的压倒最下面,最后只剩下第一个元素,不需要再进行排序,所以要进行a.Length - 1次排序
                bool flag = true;//标志位,如果在进行某一趟排序后,数组已经是有序的了,不需要再进行了,那么这个标志位会一直为true
                for (int i = 0; i < a.Length - m; i++) {  //每一趟排序后,都产生了一个最大的放到了最下面,所以下一次排序就少了一个待排序的元素
                    int j=i+1;
                   
                    if (j<a.Length && a[i] > a[j]) {//如果前面的元素大于后面的元素,就交换
                        int t = a[j];
                        a[j] = a[i];
                        a[i] = t;
                        flag = false;//有前面元素大于后面元素,标志位就设为false
                    }
                }
                if (flag){//如果标志位仍为true,那么说明数组已经是有序的了,不需要再进行比较了
                  break;
                }
            }

            for (int i = 0; i < a.Length; i++) {
                Console.WriteLine(a[i]);
            }
            Console.ReadKey();
        }
    }
}

 

运行结果:


 

冒泡排序的时间复杂度为O(n^2),冒泡排序是一种稳定的排序算法。

 

0 0
原创粉丝点击