C#算法面试题

时间:2022-03-10 06:38:35

1.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

        static void GetArray()
{
int[] intArr = new int[];
int[] intArr2 = new int[];
for (int i = ; i < ; i++)
{
intArr[i] = i+;
}
Print(intArr);
Random r=new Random();
for (int i = ; i < ; i++)
{
int j = r.Next( - i);
intArr2[i] = intArr[j];
intArr[j] = intArr[ - i - ];
}
Print(intArr2);
//Array.Sort(intArr2);
//Print(intArr2);
}
static void Print(int[] array)
{
foreach (int i in array)
{
Console.Write(i + " ");
} Console.WriteLine();
}

上面这种最优了,如果用

int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
10分应该能得到1分. 2.一个int数组,将负数放在左边,正数移动在右边.0不动
        static void Sort(int[] array)
{
int count = array.Length;
for (int i = , j = count - ; i <= j; )
{
while (array[i] <= ) i++;
while (array[j] >= ) j--;
if (array[i] > && array[j] < && i <= j)
{
array[i] = array[i] + array[j];
array[j] = array[i] - array[j];
array[i] = array[i] - array[j];
}
}
}

不需要排序

3.写一个函数计算当参数为N的值:1-2+3-4+5-6+7……+N 
        static int Sum(int[] array)
{
if (array.Length % == )
{
return array.Length / *-;
}
else
{
return array[array.Length - ] - array.Length / ;
}
}

不需要计算,请先观察即可