1.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
static void GetArray() { int[] intArr = new int[100]; int[] intArr2 = new int[100]; for (int i = 0; i < 100; i++) { intArr[i] = i+1; } Print(intArr); Random r=new Random(); for (int i = 0; i < 100; i++) { int j = r.Next(100 - i); intArr2[i] = intArr[j]; intArr[j] = intArr[100 - i - 1]; } 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 = 0, j = count - 1; i <= j; ) { while (array[i] <= 0) i++; while (array[j] >= 0) j--; if (array[i] > 0 && array[j] < 0 && 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 % 2 == 0) { return array.Length / 2*-1; } else { return array[array.Length - 1] - array.Length / 2; } }
不需要计算,请先观察即可