{"id":19432938,"url":"https://github.com/bonifatius94/veb-in-c","last_synced_at":"2026-07-17T04:30:18.461Z","repository":{"id":40479401,"uuid":"472963920","full_name":"Bonifatius94/veb-in-c","owner":"Bonifatius94","description":"A van Emde Boas tree in pure C","archived":false,"fork":false,"pushed_at":"2023-11-12T12:38:59.000Z","size":78,"stargazers_count":3,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-07T20:30:25.363Z","etag":null,"topics":["c","van-emde-boas-tree"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bonifatius94.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-22T22:57:06.000Z","updated_at":"2024-03-11T15:16:06.000Z","dependencies_parsed_at":"2024-11-10T14:41:43.176Z","dependency_job_id":null,"html_url":"https://github.com/Bonifatius94/veb-in-c","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bonifatius94%2Fveb-in-c","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bonifatius94%2Fveb-in-c/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bonifatius94%2Fveb-in-c/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bonifatius94%2Fveb-in-c/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bonifatius94","download_url":"https://codeload.github.com/Bonifatius94/veb-in-c/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240612660,"owners_count":19829050,"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":["c","van-emde-boas-tree"],"created_at":"2024-11-10T14:37:41.901Z","updated_at":"2026-07-17T04:30:18.420Z","avatar_url":"https://github.com/Bonifatius94.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Van Emde Boas Tree Data Structure\n\n## About\nThis project provides an implementation of the van-Emde-Boas tree data structure in C89 style.\nBenchmarks show that it's really efficient, e.g. sorting is ~ 10x faster than stdlib.h qsort().\n\nIt's a small, standalone, single-header implementation, not relying on any external dependencies,\nhighly portable to any operating system or processor architecture of choice.\n\n## Build Toolchain Setup\nFirst, you need to install a minimalistic C compiler toolchain for building the source code.\nAdditionally, there are a few more packages to generate the Doxygen website (optional).\n\n```sh\nsudo apt-get update\n\n# core packages for building the code / running tests\nsudo apt-get install -y build-essential cmake git\n\n# additional packages for docs generation (optional)\nsudo apt-get install -y doxygen graphviz zip unzip\n```\n\n*Note: All commands are tested on Ubuntu 20.04, but should work on any Debian-like system.*\n\n## Build + Run Tests\nClone the source code from this repository (if you haven't done already).\n\n```sh\ngit clone https://github.com/Bonifatius94/veb-in-c\ncd veb-in-c\n```\n\nNext, run the build script. This will execute a bunch of property tests and\nbenchmarks to ensure that the van Emde Boas tree is working as expected.\n\n```sh\n./build.sh\n```\n\n## Benchmark\nFor benchmarking, 500k dense indices need to be sorted. The stdlib.h qsort() function\nis compared to a sorting procedure using a Veb tree. First, all keys are inserted\ninto the tree. Then the sorting procedure looks up the smallest key and finds successors\nuntil the highest key is reached. For fairness, the benchmark includes building up the tree.\n\n```sh\nbuild/test/SortingBenchmark\n```\n\nResults show that sorting dense indices can be carried out very efficiently with Veb trees.\nIn fact, the practical performance improves by a quite significant factor of 10x.\n\n```text\nSorting Benchmark (500k keys)\n=============================\nVeb sorting took 5.796520 milliseconds\nQuicksort took 59.823940 milliseconds\n```\n\n## Doxygen Documentation\nIf you like to generate the documentation website, run the gen-docs script.\n\n```sh\n./gen-docs.sh\n```\n\nFor viewing the website, unpack the generated zip archive and open the index.html\nfile inside a web browser of choice (e.g. Firefox).\n\n```sh\nunzip vebtree-docs-html.zip\ncd vebtree-docs-html/html\nfirefox index.html\n```\n\n## Deployment into Projects\nJust copy the [vebtrees.h](./include/vebtrees.h) file into your project's include directory.\nAs already mentioned, the code is standalone, single-header, pure C89, no crazy dependencies.\n\n## License\nThis project is available under the terms of the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbonifatius94%2Fveb-in-c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbonifatius94%2Fveb-in-c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbonifatius94%2Fveb-in-c/lists"}