Web Analytics

bwarr

⭐ 116 stars Spanish by dronnix

¿Qué es?

CI codecov Go Reference Go Report Card

El Black-White Array (también conocido como BWArr) es una estructura de datos ordenada y rápida basada en arrays con $O(\log N)$ asignaciones de memoria.

Estructura de Datos

La idea del Black-White Array fue inventada y publicada por el profesor Z. George Mou en Black-White Array: A New Data Structure for Dynamic Data Sets. Este repositorio contiene la primera implementación pública.

Profesor Z. George Mou

Características clave:

Contras

Benchmarks

Benchmarks en comparación con Google BTree.

#### Inserción Mide el tiempo, asignaciones y KB asignados para insertar N valores int64 aleatorios únicos en una estructura de datos vacía. Tanto BWArr como BTree comienzan vacíos e insertan todos los valores uno por uno.

Rendimiento de inserción Asignaciones en inserción Bytes asignados en inserción Asignaciones en valores más pequeños:

Insertar Asignaciones pequeñas

#### Obtener Mide el tiempo para buscar N valores por sus claves en una estructura de datos pre-poblada. La estructura de datos se llena con todos los valores antes de que comience la medición, luego se recupera cada valor por clave.

Rendimiento de Obtener

#### Iterar Mide el tiempo para iterar a través de todos los N valores en órdenes ordenados y no ordenados. Rendimiento de Iteración Ordenada Rendimiento de Iteración No Ordenada

#### Más benchmarks Benchmarks adicionales y detalles están disponibles en el repositorio bwarr-bench. Se agregarán más métodos, también se esperan benchmarks separados para arquitecturas AMD64 y ARM64.

Instalación

Requiere Go 1.22 o superior.

go get github.com/dronnix/bwarr

Luego importe en su código:

import "github.com/dronnix/bwarr"

Uso

Ejemplo Básico

package main

import ( "fmt"

"github.com/dronnix/bwarr" )

func main() { // Create a BWArr with an integer comparison function // The second parameter (10) is the initial capacity hint bwa := bwarr.New(func(a, b int64) int { return int(a - b) }, 10)

// Insert elements bwa.Insert(42) bwa.Insert(17) bwa.Insert(99) bwa.Insert(23) bwa.Insert(8)

fmt.Printf("Length: %d\n", bwa.Len()) // Output: Length: 5

// Get an element val, found := bwa.Get(42) if found { fmt.Printf("Found: %d\n", val) // Output: Found: 42 }

// Delete an element deleted, found := bwa.Delete(17) if found { fmt.Printf("Deleted: %d\n", deleted) // Output: Deleted: 17 }

// Iterate in ascending order fmt.Println("Elements in sorted order:") bwa.Ascend(func(item int64) bool { fmt.Printf(" %d\n", item) return true // return false to stop iteration early }) // Output: // 8 // 23 // 42 // 99 }

--- Tranlated By Open Ai Tx | Last indexed: 2026-07-08 ---