源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c# 冒泡排序算法(Bubble Sort) 附实例代码

  • 时间:2020-08-27 03:40 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c# 冒泡排序算法(Bubble Sort) 附实例代码
冒泡排序(Bubble Sort) 冒泡排序算法的运作如下: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
平均时间复杂度 [img]http://files.jb51.net/file_images/article/201310/201310232031512.png[/img]
[img]http://files.jb51.net/file_images/article/201310/201310232031513.gif[/img]
[u]复制代码[/u] 代码如下:
/// <summary> /// 冒泡排序 /// </summary> /// <param name="arr"></param> /// <param name="count"></param> public static void BubbleSort(int[] arr, int count) {     int i = count, j;     int temp;     while (i > 0)     {         for (j = 0; j < i - 1; j++)         {             if (arr[j] > arr[j + 1])             {                 temp = arr[j];                 arr[j] = arr[j + 1];                 arr[j + 1] = temp;             }         }         i--;     } }        //使用例子    int[] y = new int[] { 1, 32, 7, 2, 4, 6, 10, 8, 11, 12, 3, 9, 13, 5 };     BubbleSort(y,  y.Length );     foreach (var item in y)     {         Console.Write(item+" ");       }     //1 2 3 4 5 6 7 8 9 10 11 12 13 32
简单且实用的冒泡排序算法的控制台应用程序。运行界面如下: [img]http://files.jb51.net/file_images/article/201310/20131023210256.gif[/img]
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 冒泡排序 {     class Program     {         /// <summary>         /// 交换两个整型变量的值         /// </summary>         /// <param name="a">要交换的第一个整形变量</param>         /// <param name="b">要交换的第一个整形变量</param>         private static void Reverse(ref int a, ref int b)         {             int temp = a;             a = b;             b = temp;         }         static void Main(string[] args)         {             while (true)             {                 string[] strInput;//用来接收用户输入的字符串                 int[] intInput;                 string[] separator = { ",", " " };//设置分隔符                 Console.WriteLine("请输入数据,以\",\"或空格分隔,或按\"q\"退出。");                 string str = Console.ReadLine();//接收键盘输入                 if (str == "q")                 {                     return;                 }                 strInput = str.Split(separator, StringSplitOptions.RemoveEmptyEntries);//将用户输入的字符串分割为字符串数组                 intInput = new Int32[strInput.Length];                 //将字符串数组的每一个元素转换为整型变量                 //转换时如果出现格式错误或溢出错误则提示                 try                 {                     for (int i = 0; i < strInput.Length; i++)                     {                         intInput[i] = Convert.ToInt32(strInput[i]);                     }                 }                 catch (FormatException err)                 {                     Console.WriteLine(err.Message);                 }                 catch(OverflowException err)                 {                     Console.WriteLine(err.Message);                 }                 //排序算法主体                 for (int i = 0; i < intInput.Length - 1; i++)//这里的Length要减1否则会超界                 {                     for (int j = 0; j < intInput.Length - i - 1; j++)//这里的Length要减i以减少重复运算                     {                         //如果元素j比它之后的一个元素大,则交换他们的位置                         //如此循环直到遍历完整个数组                         if (intInput[j] > intInput[j + 1])                         {                             Reverse(ref intInput[j], ref intInput[j + 1]);                         }                     }                 }                 string strOutput = "";//用于输出的字符串                 foreach (int temp in intInput)                 {                     strOutput += Convert.ToString(temp) + ",";                 }                 Console.WriteLine("排序后的数据为:\r\n{0}\r\n", strOutput);             }         }     } }
 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部