Go语言 实现bitmap
时间:2022-05-04
本文章向大家介绍Go语言 实现bitmap,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package main
import (
"fmt"
"math"
"math/rand"
"unsafe"
)
const (
size = 100
)
func main() {
test_sort()
}
func test_sort() {
arr := make([]int, size) // int占4字节,100个就占用占用400字节,3200位
for i := 0; i < len(arr); i++ {
arr[i] = rand.Intn(size)
}
print_array(arr)
newarr := bitmap_sort(arr)
print_result(newarr)
}
func print_array(arr []int) {
fmt.Printf("array:")
for i := 0; i < len(arr); i++ {
fmt.Printf(" %d", arr[i])
}
fmt.Printf("n")
}
//内存少数据最大值小可以采用方式,位排序
func bitmap_sort(arr []int) (newarr []int) {
var left uint32
size := int(unsafe.Sizeof(arr[0]) * 4)
newarr = make([]int, len(arr))
for i := 0; i < len(arr); i++ {
index := arr[i] / size
left = uint32(arr[i] % size)
leftvalue := newarr[index] & (int(math.Pow(2.0, float64(left))) - 1)
newarr[index] = (newarr[index] >> left)
if (newarr[index] & 1) == 0 {
newarr[index] += 1
}
newarr[index] = (newarr[index] << left) + leftvalue
}
return newarr
}
func print_result(arr []int) {
index := 0
size := int(unsafe.Sizeof(arr[0]) * 4)
fmt.Printf("new array:")
for i := 0; i < len(arr); i++ {
for j := 0; j < size; j++ {
bit := arr[i] & 1
if bit != 0 {
fmt.Printf(" %d", index)
}
arr[i] = arr[i] >> 1
index++
}
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于web的图书管理系统设计与实现
- 《Flutter 动画系列一》25种动画组件超全总结
- 网工小白升级打怪篇(三)ssh实现远程管理
- 贪吃蛇的使命 | 零基础入门贪吃蛇游戏(附源码、演示地址)
- Java开发岗面试题--基础篇(二)
- C++核心准则T.48:如果你的编译器不支持concepts,使用enable_if模仿它
- 《Flutter 动画系列》组合动画
- Flutter 完美的验证码输入框
- 【送红宝书】JavaScript 测试系列实战(四):掌握 React Hooks 测试技巧
- Spring 自定义注解你了解过吗?
- 《Flutter 小技巧》一行禁用App,一行置灰App,致敬
- 字符串:总结篇!
- 3 个助你玩转正则表达式的利器
- Flutter 实现虎牙/斗鱼 弹幕效果
- 计算机视觉的数据增广技术大盘点!附涨点神器,已开源!