{"id":13693566,"url":"https://github.com/ice1000/algo4j","last_synced_at":"2025-03-17T17:31:27.077Z","repository":{"id":95486354,"uuid":"73926390","full_name":"ice1000/algo4j","owner":"ice1000","description":":horse_racing: An algorithm library using java native interface","archived":false,"fork":false,"pushed_at":"2019-09-13T15:59:29.000Z","size":806,"stargazers_count":67,"open_issues_count":0,"forks_count":12,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-02-28T02:23:57.737Z","etag":null,"topics":["algorithm-library","graph-algorithms","java","jni","kotlin","kotlin-extensions","network-streams","segment-tree"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ice1000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-11-16T14:09:03.000Z","updated_at":"2024-09-15T17:03:49.000Z","dependencies_parsed_at":"2023-07-03T21:40:19.530Z","dependency_job_id":null,"html_url":"https://github.com/ice1000/algo4j","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ice1000%2Falgo4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ice1000%2Falgo4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ice1000%2Falgo4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ice1000%2Falgo4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ice1000","download_url":"https://codeload.github.com/ice1000/algo4j/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243872483,"owners_count":20361493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm-library","graph-algorithms","java","jni","kotlin","kotlin-extensions","network-streams","segment-tree"],"created_at":"2024-08-02T17:01:12.676Z","updated_at":"2025-03-17T17:31:26.537Z","avatar_url":"https://github.com/ice1000.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"\n# algo4j\n\nContinuous Integration|Status\n:---|:---:\nTravis CI|[![Build Status](https://travis-ci.org/ice1000/algo4j.svg?branch=master)](https://travis-ci.org/ice1000/algo4j)\nCircleCI|[![CircleCI](https://circleci.com/gh/ice1000/algo4j/tree/master.svg?style=svg)](https://circleci.com/gh/ice1000/algo4j/tree/master)\nCodeShip|[![CodeShip](https://codeship.com/projects/313a88d0-0990-0135-51ec-6af2f1d244f3/status?branch=master)](https://app.codeship.com/projects/214594)\nAppVeyor|[![Build status](https://ci.appveyor.com/api/projects/status/atqp1d81m5irdr9q?svg=true)](https://ci.appveyor.com/project/ice1000/algo4j)\n\n[![JitPack](https://jitpack.io/v/ice1000/algo4j.svg)](https://jitpack.io/#ice1000/algo4j)\n[![Gitter](https://badges.gitter.im/ice1000/algo4j.svg)](https://gitter.im/ice1000/algo4j)\n[![Stories in Ready](https://badge.waffle.io/ice1000/algo4j.png?label=In%20Progress\u0026title=In%20Progress)](http://waffle.io/ice1000/algo4j)\n[![codecov](https://codecov.io/gh/ice1000/algo4j/branch/master/graph/badge.svg)](https://codecov.io/gh/ice1000/algo4j)\n\n\u003cbr/\u003e\n\n[中文](./README_Zh.md)\n\nThis is an algorithm library for Java, whose core is written in C++, linked with JNI.\n\nIt is test-driven(also benchmarks), well-documented, with code generation for some special cases.\n\n## Project structure\n\nfile name|usage\n:---|---:\njni|C++ codes\ncode_drafts|something written but not used ATM\nlibjni.dll/libjni.so/libjni.dylib|jni library\njni/cpp-test|C++ tests\nsrc/main/java|source(independent)\nsrc/main/kotlin|Kotlin extension library\nsrc/test|tests\n\nThe `jni library` above is not included in the repo,\nplease build it yourself, or download at:\n\n+ General: [GitHub release](https://github.com/ice1000/algo4j/releases)\n+ Windows only: [AppVeyor artifact](https://ci.appveyor.com/project/ice1000/algo4j/build/artifacts)\n+ Linux only: [CircleCI](https://circleci.com/gh/ice1000/algo4j) =\u003e latest build =\u003e artifact page.\n\nPut it to your working directory after download or build one.\n\n## Overview\n\n- [X] Binary indexed tree, including P(point)-U(update)-I(interval)-Q(query), I-U-P-Q and I-U-I-Q.\n- [X] Trigonometric functions, including: sin, cos, tan, cot, sec, csc.\n- [X] Union set. including path compression and heuristic merge.\n- [X] Math utils, including fast power series, primes, fibs, etc.\n- [X] Sequence utils, like sorts, discretization, kmp, toString, etc.\n- [X] Graph theory algorithms, like SPFA, Floyd, Kruskal, Bellman Ford, Dijkstra, dfs, etc.\n- [X] A Win32API interface for windows only, right call something like 'Beep'.\n- [X] Linear data structure, Stack and Queue.\n- [X] Minimum binary heap(priority queue), support adding and extracting.\n- [X] Trie tree, whose key supports ASCII 32-127, as Trie\u003cT\u003e : Map\u003cString, T\u003e.\n- [X] Multi-threading quick sort implementation.\n- [X] Fast power for big integers.\n- [X] Big Integer(plus minus mul div rem), faster(usually) than java.math.BigInteger.\n- [X] Segment Tree, multi-implementations.\n- [X] Durable Segment Tree, multi-implementations.\n\nActually, every java classes are well-documented.\u003cbr/\u003e\nFor more information, see JavaDocs in each java file or package-info.java.\n\n## Languages\n\npart of this project|language\n:---|---:\ncore|C++\ncore tests|C++\njni interface|Java\njava port tests|Kotlin\ncode generation|Kotlin\nextension|Kotlin\n\n## Contribution\n\nThere is a [README file](./jni/README.md) under `jni` path, it's strongly-recommended right read that.\n\nThis library is Test-driven, so there are tests for every class. If you want to contribute, please offer tests for your classes.\n\n### Rules of contribution\n\n+ Each class should be well-documented.\n+ If there's too much repeat, write a code generator right generate corresponding codes for each cases.\n+ For C++, you should follow the [code style](./jni/README.md).\n+ For each class with native methods, provide a unit-test.\n+ I'll write the library itself with Java and tests with Kotlin, but I also accept Tests with other languages.\n+ Issues and pull requests are always welcomed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fice1000%2Falgo4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fice1000%2Falgo4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fice1000%2Falgo4j/lists"}