晚上洗菜的时候突然一想, "最快的算法......", 觉得当时没把题目把握好,并且一下子来了灵感, 于是把它coding下来:
using
System;
using System.Collections.Generic;
namespace SortDemo
{
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>();
while(list.Count < 100)
{
int num = new Random().Next(-100, 200);
if(num >=1 && num <=100 && !list.Contains(num))
list.Add(num);
}
int[] array = new int[100];
for(int i = 0; i < array.Length; i++)
{
array[i] = list[i];
}
int[] sortArray = new int[100];
for(int j= 0; j < array.Length; j++)
{
sortArray[array[j]-1] = array[j];
}
for(int k=0; k < sortArray.Length; k++)
{
Console.WriteLine(string.Format("{0} {1}",k,sortArray[k]));
}
Console.Read();
}
}
}
选择-100,200这个区间并判断生成的数字是不是落在1,100之后是想加快生成速度. 按正态分布的随机数来说,应该有比-100,200的区间更快生成100个不重复的随机数.
using System.Collections.Generic;
namespace SortDemo
{
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>();
while(list.Count < 100)
{
int num = new Random().Next(-100, 200);
if(num >=1 && num <=100 && !list.Contains(num))
list.Add(num);
}
int[] array = new int[100];
for(int i = 0; i < array.Length; i++)
{
array[i] = list[i];
}
int[] sortArray = new int[100];
for(int j= 0; j < array.Length; j++)
{
sortArray[array[j]-1] = array[j];
}
for(int k=0; k < sortArray.Length; k++)
{
Console.WriteLine(string.Format("{0} {1}",k,sortArray[k]));
}
Console.Read();
}
}
}