C#的几种简单算法

算法(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();
       }
   }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.背景介绍 什么是算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算...
    远望的云阅读 4,053评论 0 1
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,402评论 0 13
  • 算法的概念 程序=算法+数据结构+程序设计方法+语言工具和环境 做任何事情都有一定的步骤。为解决一个问题而采取的方...
    沉麟阅读 1,841评论 0 0
  • 文/文风居士 文风客栈故事汇 心无忌,天垂青。 【一】 “风铃儿”是个像风一样浪漫清纯的女孩,向往风一样自由的女孩...
    成悦如阅读 1,634评论 0 1
  • 下了好久的雨终于停了,久违的阳光是那样温暖。 三月是温暖的三月,三月的校园充满生机。 顶着头顶的太阳在校园里转一转...
    心蕊啊阅读 2,744评论 1 3

友情链接更多精彩内容