• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#常用算法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、递归算法

  递归:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。

   循环:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门(若前面两扇门都一样,那么这扇门和前两扇门也一样;如果第二扇门比第一扇门小,那么这扇门也比第二扇门小,你继续打开这扇门,一直这样继续下去直到打开所有的门。但是,入口处的人始终等不到你回去告诉他答案。

1、定义:

  在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。实际上,递归,顾名思义,其包含了两个意思:递 和 归,这正是递归思想的精华所在。

2、实例(斐波那契数列):1、1、2、3、5、8.......用递归算法求第30位数的值

  static void  Main(string[] args)
  {
    int[] sum = new int[30];

    for (int i = 0; i < sum.Length; i++)
    {
      sum[i] = process1(i);
      Console.WriteLine(sum[i]);
    }

  }

  public static int process1(int a)
  {
    if (a == 0 || a == 1) return 1;

    return process1(a - 1) + process1(a - 2);
  }

3、阶乘算法

  public static int process2(int n)
  {
    if (n == 1) return 1;

    return n * process2(n - 1); // 相同重复逻辑,缩小问题的规模
  }

二、冒泡法排序

 1、定义:

  就是将一个数组中的元素按照从大到小或者从小到大的排序进行排列。

2、实例:

  int[] nums = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

  for (int i = 0; i < nums.Length - 1; i++)
  {
    for (int j = 0; j < nums.Length - 1 - i; j++)
    {
      if (nums[j] > nums[j + 1])
      {
        int temp = nums[j];
        nums[j] = nums[j + 1];
        nums[j + 1] = temp;
      }
    }
  }

  // 输出

  foreach (var num in nums)
  {
    Console.WriteLine(num);
  }

 

3、只能针对数组做一个升序的排序

  int[] nums = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

  Array.Sort(nums);

4、对数组进行反转

  int[] nums = { 1, 4, 3, 6, 9, 8, 11 };

  Array.Reverse(nums);

三、折半查找、二分算法

 1、定义:

  折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。

  要计算把目标值插入到该数组中的索引值。最开始的思路:

  ①.先把目标数插入到数组中

  ②.进行排序

  ③.返回索引

2、实例:

  public static int process4(int[] arr, int low, int high, int key)
  {
    int mid = (low + high) / 2;
    if (low > high)
      return -1;
    else
    {
      if (arr[mid] == key)
        return mid;
      else if (arr[mid] > key)
        return process4(arr, low, mid - 1, key);
      else
        return process4(arr, mid + 1, high, key);
    }
  }


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#反序列化datetime的处理发布时间:2022-07-10
下一篇:
MongoDB官方C#驱动中查询条件Query用法发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap