zoukankan      html  css  js  c++  java
  • 排序算法之冒泡排序

    1.基本思路

        (1)比较数组中两个相邻的元素。如果第一个比第二个大,则交换。
        (2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,例如:第一个树和第二个树比较,第一个数大于第二个则交换,然后第二个和第三个比较,第二个大则交换…… 最终                将最大数移至最后。
         (3)重复以上步骤,完成n-1次

    2.时间复杂的

          (1)最好情况:序列是升序排列,在这种情况下,需要进行的比较操作为(n-1)次。交换操作为0次。即O(n)

          (2) 最坏情况:序列是降序排列,那么此时需要进行的比较共有n(n-1)/2次。交换操作数和比较操作数一样。即O(n^2)

          (3)渐进时间复杂度(平均时间复杂度):O(n^2)

    3.代码实现

     1 namespace BubbleSortProgram
     2 {
     3     public class Program
     4     {
     5         static void Main(string[] args)
     6         {
     7             Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
     8             int[] arry = { 9,7,12,6,8,1};
     9             Console.WriteLine("-------------排序前--------------");
    10             for (int i = 0; i < arry.Length; i++)
    11             {
    12                 Console.Write(arry[i]+" ");
    13             }
    14             BubbleSort(arry);
    15             Console.WriteLine("
    -------------排序后--------------");
    16             for (int i = 0; i < arry.Length; i++)
    17             {
    18                 Console.Write(arry[i]+" ");
    19             }
    20             Console.ReadKey();
    21          }
    22 
    23         /// <summary>
    24         /// 冒泡排序
    25         /// </summary>
    26         /// <param name="arry"></param>
    27         public static  void BubbleSort(int[] arry)
    28         {
    29             if (arry.Length == 0 || arry == null)
    30                 return;
    31             for (int i = 0; i < arry.Length - 1; i++)
    32             {
    33                 for (int j = 0; j < arry.Length - i - 1; j++)
    34                 {
    35                     if (arry[j] > arry[j + 1])
    36                     {
    37                         var temp = arry[j+1];
    38                         arry[j + 1] = arry[j];
    39                         arry[j] = temp;
    40                     }
    41                 }
    42             }
    43         }
    44     }
    45 }

    运行结果:

  • 相关阅读:
    Testlink1.9.17使用方法( 第三章 初始配置[配置用户、产品] )
    Testlink1.9.17使用方法(第二章 登录&汉化设置)
    Testlink1.9.17使用方法(第一章 前言)
    TestLink-Windows安装教程
    Linux-Redmine安装方法
    怎么使用Fiddler进行抓包
    配置ADB到Windows环境变量
    Android获取定位权限,获取设备所在的经纬度
    Paint.FontMetrics
    Bitmap上下合成图片
  • 原文地址:https://www.cnblogs.com/smilejeffery/p/7200810.html
Copyright © 2011-2022 走看看