利用BitMap可以对某些数据进行排序,但是限制条件是必须实现知道数据的范围,而且不能重复,类似于桶排序,但是比桶排序更加节省内存。
原理很简单,就是设置数组某一位的数在BitMap中对应位为1,然后遍历数组就可以得到结果。
这里以100以内的一个数组排序为例
例如数组:
int[] array = { 6, 2, 8, 4, 33, 23, 99, 9 };
则设置BitMap第6位(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-->
分享到:
相关推荐
当递归到规模足够小时,利用插入排序 归并前判断一下是否还有必要归并 只在排序前开辟一次空间 基数(桶)排序 思想 分配,回收(分配到不同的位置上,然后回收)..不断分配..回收来...
利用快速/堆/归并排序按照出现次数进行排序。将排序好的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 ...
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 ...
数据查询语言 (Data Query Language, DQL) 是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。例如:SELECT(查询) 数据控制语言Data Controlling Language(DCL),用来...
则需要进行全表扫描, 以便将数据按照所定义的语言排序进行整理。 值范围: BINARY 或有效的语言定义名。 默认值: 从 NLS_LANGUAGE 中获得 nls_territory: 说明: 为以下各项指定命名约定, 包括日期和星期的编号, ...
Bitmap和BitmapData类 处理像素 复制位图数据 使用杂点功能制作纹理 滚动位图 利用mipmap处理 位图示例:带动画效果的旋转的月亮 位图图像的异步解码 第章:过滤显示对象 过滤显示对象的基础知识 创建和应用滤镜 可用...
《C#全能速查宝典》所讲的知识点按照功能和字母进行排序,读者既可以按照功能顺序查找,又可以按照字母顺序学习。 《C#全能速查宝典》不仅适合C#程序设计初学者,也可作为中、高级程序开发人员的参考手册。 ========...
|--利用FinalHttp实现多线程断点续传 |--加密之MD5 |--动画Animation详解 |--动画之view左右抖动 |--动画之移动动画 |--动画之组合动画 |--动画之缩放动画ScaleAnimation |--反序列化对象 |--发送短信 读天气 调音量...
在这一章我将教会你如何将一幅位图(bitmap)映射到正方体的六个面上去。我们将使用第一章的OpenGL代码来创建工程。创建一个空的窗口比修改上一课的代码更容易。 你将会发现第一章的代码在对于快速创建工程来说是及其...
在这一章我将教会你如何将一幅位图(bitmap)映射到正方体的六个面上去。我们将使用第一章的OpenGL代码来创建工程。创建一个空的窗口比修改上一课的代码更容易。 你将会发现第一章的代码在对于快速创建工程来说是及其...
1.4.2. 请修改 append 函数,利用这个函数实现............................................. 78 1.4.3. 有 n 个长为 m+1 的字符串 ................................................................ 82 1.4.4. n...