已知一个length为1000000的整数数组,,数组最大元素为1000,最小元素100,排序输出所有元素。
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
BitMap bm = new BitMap(1000000, 100, 1000);
bm.CreateRandomData();//产生随机数
bm.Sort();//排序
bm.PrintDataAfterSort();//输出
Console.ReadLine();
}
}
class BitMap
{
int DataLenth;
int MaxNumber;
int minNumber;
int[] DataForStore;
int[] DataForSort;
/// <summary>
///
/// </summary>
/// <param name="datelenth">带排序个数</param>
/// <param name="maxnumber">带排序最大数</param>
public BitMap(int datelenth, int minnumber, int maxnumber)
{
DataLenth = datelenth;
MaxNumber = maxnumber;
minNumber = minnumber;
DataForStore = new int[maxnumber - minNumber + 1];
}
/// <summary>
/// 产生随机数,便于测试
/// </summary>
public void CreateRandomData()
{
Random r = new Random();
DataForSort = new int[DataLenth];
for (int i = 0; i < DataLenth; i++)
{
DataForSort[i] = r.Next(minNumber, MaxNumber + 1);
}
}
/// <summary>
/// 排序
/// </summary>
public void Sort()
{
for (int i = 0; i < DataLenth; i++)
{
DataForStore[DataForSort[i] - minNumber]++;
}
}
/// <summary>
/// 输出排序后的数据
/// </summary>
public void PrintDataAfterSort()
{
for (int i = minNumber; i <= MaxNumber; i++)
{
for (int j = 0; j < DataForStore[i - minNumber]; j++)
{
Console.Write(i + ",");
}
}
}
}
}