【C#】冒泡算法例子

来自C#课无聊时间的成果

隔壁的dalao已经开始研究桶排序萌新表示瑟瑟发抖

输出效果如图:

《【C#】冒泡算法例子》

本例在VS2017环境下编写,在VS2008及以下版本会出现不支持的语法

没错,学校机房,说的就是你!

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

namespace BubbleSort
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList userinput = new ArrayList();//由于不知道用户会输入几个数,使用灵活的集合
            string tempvar = "";//临时储存用户输入的字符
            Console.WriteLine("冒泡排序算法 Demo Ver2.0");
            for (int i = 0;i == i; i++)//为了计数方便而使用for,也可以使用while(true)
            {
                int n = i + 1;//集合的索引从0开始,而计数从1开始
                Console.WriteLine($"请输入第{n}个数(输入n结束):");
                tryagain://goto跳回此处
                try
                {
                    tempvar = Console.ReadLine();//获取用户输入的string
                    userinput.Add(Convert.ToInt64(tempvar));//转换为int64后加入集合,若用户输入非法字符则捕获异常
                }
                catch
                {
                    if (tempvar.ToLower() == "n")//输入n表示用户停止输入
                    {
                        break;//跳出循环开始排序
                    }
                    Console.WriteLine("您输入的数据不正确,请重新输入(输入n结束):");//输入的是其他非法字符
                    goto tryagain;//重新获取用户输入

                }
            }
            Console.WriteLine("\n排序前的数组:\n");
            foreach (var item in userinput)
            {
                Console.Write($"{item},");//依次输出每个用户键入的数字
            }
            Console.WriteLine("\n按任意键开始排序……");
            Console.ReadKey();
            /*冒泡实现
             先取第一个数,将这个数与其他i-1个数作比较,
             如果这个数与对比的数相比更小,则相互换位(内循环),
             这个集合有几个成员就这样判断几次(外循环),
             */
            for (int i = 0; i < userinput.Count; i++)
            {
                for (int j = 1; j < userinput.Count; j++)
                {
                    if ((Int64)userinput[j - 1] < (Int64)userinput[j])
                    {
                        Int64 temp = (Int64)userinput[j - 1];
                        userinput[j - 1] = userinput[j];
                        userinput[j] = temp;
                    }
                }
            }
            //冒泡完成
            Console.WriteLine("\n排序后的数组:\n");
            foreach (var item in userinput)
            {
                Console.Write($"{item},");//依次读出集合中的数字排列
            }
            Console.WriteLine("\n按任意键继续……");
            Console.ReadKey();
        }
    }
}

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注