美文网首页
C#的几种简单算法

C#的几种简单算法

作者: 困卡 | 来源:发表于2017-03-17 12:02 被阅读0次

    算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰[指令],算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的[输入],在有限时间内获得所要求的输出。

    阶乘

     public  static long Calculate(int n)
            {
                if (n < 0)
                {
                    throw new ArgumentOutOfRangeException("n必须为非负数。");
                }
                if (n == 0)
                {
                    return 1;
                }
                return n * Calculate(n - 1);
            }
                static void Main(string[] args)
            {
                Console.WriteLine(Calculate(0));
    
                }
    

    冒泡排序

    private void Func(int[] Arg)
            {     
      //外循环每次把参与排序的最大数排在最后
                for (int i = 1; i < Arg.Length; i++)
                {
                    int a = 0;  // 临时变量
    
     //内层循环负责对比相邻的两个数,并把最大的排在后面
                    for (int j = 0; j < Arg.Length-i; j++)
                    {
    //如果前 一个数大于后一个数,则交换两个数
                        if (Arg[j] > Arg[j + 1])
                        {
                            a = Arg[j + 1];
                            Arg[j + 1] = Arg[j];
                            Arg[j] = a;
                        }
        //用一个循环访问数组里的元素并打印
                    for (int k = 0; k < Arg.Length; k++)
                    {
                        Console.WriteLine(Arg[k]);
                    }
              }
    

    插入排序

    public class insertSort
       {
           static void Main2()
           {
               int[] number = { 30, 25, 65, 17, 99, 12, 33, 9, 200, 2, 60 };
               int tmp;
               for (int i = 1; i <= number.Length - 1; i++)
               {
                   if (number[i] < number[i - 1])
                   {
                       tmp = number[i];
                       int j = i - 1;
                       for (; j >= 0&&number[j] > tmp ; j--)
                       {
                           number[j + 1] = number[j];
                       }
                       number[j+1] = tmp;
                   }
               }
               for (int i = 0; i < number.Length; i++)
               Console.WriteLine(number[i]);
               Console.Read();
           }
       } 
    

    折半排序

    public class halfSort
       {
           static void Main()
           {
               int[] number = { 30, 25, 65, 17, 99, 12, 9, 33, 200, 2, 60 };
               int tmp;
               for (int i = 1; i <= number.Length - 1; i++)
               {
                   tmp = number[i];
                   int low = 0;
                   int high = i - 1;
                   while (low <= high)
                   {
                       int pos = (low + high) / 2;
                       if (tmp < number[pos])
                           high = pos - 1;
                       else
                           low = pos + 1;
                   }
                   for (int j = i - 1; j > high; j--)
                       number[j + 1] = number[j];
                   number[high + 1] = tmp;
               }
               for (int i = 0; i < number.Length; i++)
               Console.WriteLine(number[i]);
               Console.Read();
           }
       }
    

    相关文章

      网友评论

          本文标题:C#的几种简单算法

          本文链接:https://www.haomeiwen.com/subject/xjlenttx.html