ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#.NET面试题汇总系列九:常见算法

2022-03-01 15:01:28  阅读:175  来源: 互联网

标签:面试题 myList C# arr len int static str NET


菲波纳契数列

要点:递归的使用,终止条件

有一列数1,1,2,3,5,........求第30个数

public static int Foo(int i)
{
   if (i <= 0)
        return 0;
   else if (i > 0 && i <= 2)
        return 1;
   else
        return Foo(i - 1) + Foo(i - 2);
}

冒泡排序

要点:第二个循环的开始位置

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

求N的阶乘

要点:递归,终止条件(1x2x..),如果n为2或1那就是本身

public static int Fun(int i)
{
    if (i == 1) { return 1; }
    if (i == 2) { return 2; }
    return i * (Fun(i - 1));
}

产生一个指定长度的int数组并随机插入数

要点:int[] 数组没有检查的方法,ArrayList有Contains方法

public static void Fun(int len)
{
    int[] arr = new int[len];

    ArrayList myList = new ArrayList();
    Random rad = new Random();
    while (myList.Count < len)
    {
        int num = rad.Next(1, len + 1);
        if (!myList.Contains(num))
        {
            myList.Add(num);
        }
    }
    for (int i = 0; i < len; i++)
    {
        arr[i] = (int)myList[i];
    }

    myList.Sort();
    Console.WriteLine(myList[len - 1]);
}

不使用第三方变量来交换两个变量的值

方法一:算术运算

int a = 10,b = 12;
a=b-a; //a=2;b=12
b=b-a; //a=2;b=10
a=b+a; //a=12;b=10

方法二:位运算,通过异或运算也能实现变量的交换

int a = 10, b = 12; //a=1010^b=1100;
a = a ^ b; //a=0110^b=1100;
b = a ^ b; //a=0110^b=1010;
a = a ^ b; //a=1100=12;b=1010;

方式三:变量本身交换数值

b = (a + b) - (a = b);

查找一个int数组中的最大最小值

static void Main(string[] args)
{
    int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
    int max = arr[0], min = arr[0];
    for (int i = 0; i < arr.Length; i++)
    {
        if (arr[i] >= max)
        {
            max = arr[i];
        }
        if (arr[i] < min)
        {
            min = arr[i];
        }
    }
    Console.WriteLine(string.Format("max{0},min{1}", max, min));
}

判断字符串是否为回文字符串

static void Main(string[] args)
{
    string str = "abcdcba";
    Console.WriteLine(Fun(str));
}

private static bool Fun(string str)
{
    for (int i = 0; i < str.Length/2; i++)
    {
        if (str[i] != str[str.Length - i - 1]) return false;
    }
    return true;
}

标签:面试题,myList,C#,arr,len,int,static,str,NET
来源: https://www.cnblogs.com/weiyongguang/p/15950162.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有