C#实现位图排序算法

C#实现位图排序算法

 

 

位图排序法有两个限制条件:
1、待排序数据都在一个已知的相对较小的范围内;
2、所有数据没有重复;
输入:由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

数据结构:位数组
算法:位图排序算法

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值