SkillAgentSearch skills...

Algo4j

:horse_racing: An algorithm library using java native interface

Install / Use

/learn @ice1000/Algo4j

README

algo4j

Continuous Integration|Status :---|:---: Travis CI|Build Status CircleCI|CircleCI CodeShip|CodeShip AppVeyor|Build status

JitPack Gitter Stories in Ready codecov

<br/>

中文

This is an algorithm library for Java, whose core is written in C++, linked with JNI.

It is test-driven(also benchmarks), well-documented, with code generation for some special cases.

Project structure

file name|usage :---|---: jni|C++ codes code_drafts|something written but not used ATM libjni.dll/libjni.so/libjni.dylib|jni library jni/cpp-test|C++ tests src/main/java|source(independent) src/main/kotlin|Kotlin extension library src/test|tests

The jni library above is not included in the repo, please build it yourself, or download at:

Put it to your working directory after download or build one.

Overview

  • [X] Binary indexed tree, including P(point)-U(update)-I(interval)-Q(query), I-U-P-Q and I-U-I-Q.
  • [X] Trigonometric functions, including: sin, cos, tan, cot, sec, csc.
  • [X] Union set. including path compression and heuristic merge.
  • [X] Math utils, including fast power series, primes, fibs, etc.
  • [X] Sequence utils, like sorts, discretization, kmp, toString, etc.
  • [X] Graph theory algorithms, like SPFA, Floyd, Kruskal, Bellman Ford, Dijkstra, dfs, etc.
  • [X] A Win32API interface for windows only, right call something like 'Beep'.
  • [X] Linear data structure, Stack and Queue.
  • [X] Minimum binary heap(priority queue), support adding and extracting.
  • [X] Trie tree, whose key supports ASCII 32-127, as Trie<T> : Map<String, T>.
  • [X] Multi-threading quick sort implementation.
  • [X] Fast power for big integers.
  • [X] Big Integer(plus minus mul div rem), faster(usually) than java.math.BigInteger.
  • [X] Segment Tree, multi-implementations.
  • [X] Durable Segment Tree, multi-implementations.

Actually, every java classes are well-documented.<br/> For more information, see JavaDocs in each java file or package-info.java.

Languages

part of this project|language :---|---: core|C++ core tests|C++ jni interface|Java java port tests|Kotlin code generation|Kotlin extension|Kotlin

Contribution

There is a README file under jni path, it's strongly-recommended right read that.

This library is Test-driven, so there are tests for every class. If you want to contribute, please offer tests for your classes.

Rules of contribution

  • Each class should be well-documented.
  • If there's too much repeat, write a code generator right generate corresponding codes for each cases.
  • For C++, you should follow the code style.
  • For each class with native methods, provide a unit-test.
  • I'll write the library itself with Java and tests with Kotlin, but I also accept Tests with other languages.
  • Issues and pull requests are always welcomed.

Related Skills

View on GitHub
GitHub Stars67
CategoryDevelopment
Updated5mo ago
Forks12

Languages

C++

Security Score

97/100

Audited on Oct 28, 2025

No findings