`
luliangy
  • 浏览: 95184 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用BitMap进行排序

阅读更多

    利用BitMap可以对某些数据进行排序,但是限制条件是必须实现知道数据的范围,而且不能重复,类似于桶排序,但是比桶排序更加节省内存。

 

     原理很简单,就是设置数组某一位的数在BitMap中对应位为1,然后遍历数组就可以得到结果。

这里以100以内的一个数组排序为例

 

例如数组:

int[] array = { 6, 2, 8, 4, 33, 23, 99, 9 };

 

则设置BitMap6(BitMap从第0位开始)1,第2位为1......

 

/**
	 * 利用BitMap进行排序;
	 * @param array
	 */
	public static void bitMapSort(int[] array){
		
		//开辟16个Byte;
		byte[] bs=new byte[16]; 
		for(int i=0;i<array.length;i++){
			//设置array[i]位为1;
			//得到Byte表中的位置;
			int pos=array[i]/8;
			//设置位;
			int index=array[i]%8;
			bs[pos]=(byte) (bs[pos]+(byte)(0x01<<(index)));
		}
		int count=0;
		int num=0;
		//遍历Byte表;
		//考虑设置数组对应位的值;
		for(int i=0;i<bs.length;i++){
			byte b=bs[i];
			for(int j=0;j<8;j++){
				byte bi=(byte) (b&(0x01<<j));
				if(bi!=0){
					num=i*8+j;
					array[count]=num;
					count++;
				}
			}
		}
		
	}

 

<!--EndFragment-->

分享到:
评论

相关推荐

    数据结构与算法.xmind

    当递归到规模足够小时,利用插入排序 归并前判断一下是否还有必要归并 只在排序前开辟一次空间 基数(桶)排序 思想 分配,回收(分配到不同的位置上,然后回收)..不断分配..回收来...

    大数据面试题(2).docx

    利用快速/堆/归并排序按照出现次数进行排序。将排序好的query和对应的query_cout输出到文件中。这样得到了10个排好序的文件(记为)。 s、对这10个文件进行归并排序(内排序与外排序相结合)。 方案2: 一般query的...

    海量数据库解决方案_韩国_李华植

    3.2.4 位图(bitmap)执行计划175 3.2.4.1 各种条件运算符的位图执行计划176 3.2.4.2 子查询执行计划182 3.2.4.3 与b-tree索引相结合的执行计划184 3.2.5 其他特殊处理的执行计划185 3.2.5.1 递归展开(recursive ...

    海量数据库解决方案_韩国_李华植_Part02

    3.2.4 位图(bitmap)执行计划175 3.2.4.1 各种条件运算符的位图执行计划176 3.2.4.2 子查询执行计划182 3.2.4.3 与b-tree索引相结合的执行计划184 3.2.5 其他特殊处理的执行计划185 3.2.5.1 递归展开(recursive ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     数据查询语言 (Data Query Language, DQL) 是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。例如:SELECT(查询)  数据控制语言Data Controlling Language(DCL),用来...

    Oracle9i的init.ora参数中文说明

    则需要进行全表扫描, 以便将数据按照所定义的语言排序进行整理。 值范围: BINARY 或有效的语言定义名。 默认值: 从 NLS_LANGUAGE 中获得 nls_territory: 说明: 为以下各项指定命名约定, 包括日期和星期的编号, ...

    ActionScript开发人员指南中文版

    Bitmap和BitmapData类 处理像素 复制位图数据 使用杂点功能制作纹理 滚动位图 利用mipmap处理 位图示例:带动画效果的旋转的月亮 位图图像的异步解码 第章:过滤显示对象 过滤显示对象的基础知识 创建和应用滤镜 可用...

    C#全能速查宝典

    《C#全能速查宝典》所讲的知识点按照功能和字母进行排序,读者既可以按照功能顺序查找,又可以按照字母顺序学习。 《C#全能速查宝典》不仅适合C#程序设计初学者,也可作为中、高级程序开发人员的参考手册。 ========...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--利用FinalHttp实现多线程断点续传 |--加密之MD5 |--动画Animation详解 |--动画之view左右抖动 |--动画之移动动画 |--动画之组合动画 |--动画之缩放动画ScaleAnimation |--反序列化对象 |--发送短信 读天气 调音量...

    OPenGL编程书籍

    在这一章我将教会你如何将一幅位图(bitmap)映射到正方体的六个面上去。我们将使用第一章的OpenGL代码来创建工程。创建一个空的窗口比修改上一课的代码更容易。 你将会发现第一章的代码在对于快速创建工程来说是及其...

    Nehe的OpenGL教程电子书

    在这一章我将教会你如何将一幅位图(bitmap)映射到正方体的六个面上去。我们将使用第一章的OpenGL代码来创建工程。创建一个空的窗口比修改上一课的代码更容易。 你将会发现第一章的代码在对于快速创建工程来说是及其...

    世界500强面试题.pdf

    1.4.2. 请修改 append 函数,利用这个函数实现............................................. 78 1.4.3. 有 n 个长为 m+1 的字符串 ................................................................ 82 1.4.4. n...

Global site tag (gtag.js) - Google Analytics