输入:由n个数构成的一个序列(a1,a2,a3,……an)中(a1≠a2≠a3≠……≠an)且任意an≤n
输出:重新排列的序列(b1,b2,b3,……bn),使得b1<b2<b3<……<an
示例:
输入->5
8
1
3
2
11(此数目的让输入程序结束,已越界)
输出:1 2 3 5 8
数据结构:位数组
算法:位图排序算法
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;//添加位数组的命名空间
namespace ConsoleApplication16
{
class Program
{
static void Main(string[] args)
{
BitArray bits = new BitArray(10); //位数组
int b=0;//位数组下标
bits.SetAll(false);//初始化数组
Console.WriteLine("输入数据并换行:");
for (int i = 0; i <10;i++ )//输入
{
b = Convert.ToInt32(Console.ReadLine());
if (b >= 10)//如果越界跳出循环
{
break;
}//end if
bits[b] = true;
}//end for
for (int i = 0; i < 10;i++ )//输出
{
if(bits[i]==true)
{
Console.WriteLine(i);
}//end if
}//end for
Console.WriteLine("排序后位图信息,看到这就是明白什么原理了。");
foreach(bool bl in bits)
{
Console.Write(bl?1:0);
}//end foreach
Console.ReadKey(); //暂停黑幕,观看结果
}//end Main()
}//end class program
}//namespace ConsoleApplication16