{"id":26059646,"url":"https://github.com/mnikander/table_of_algorithms","last_synced_at":"2026-03-10T06:32:06.651Z","repository":{"id":262106600,"uuid":"871865536","full_name":"mnikander/table_of_algorithms","owner":"mnikander","description":"signatures and properties of several algorithms","archived":false,"fork":false,"pushed_at":"2025-01-24T09:39:53.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-08T13:28:42.534Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/mnikander.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":"2024-10-13T06:46:09.000Z","updated_at":"2025-01-24T09:39:57.000Z","dependencies_parsed_at":"2024-11-10T15:44:18.471Z","dependency_job_id":"d28e6bd5-94a0-4a8f-a41b-b088f15ad320","html_url":"https://github.com/mnikander/table_of_algorithms","commit_stats":null,"previous_names":["mnikander/table_of_algorithms"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mnikander/table_of_algorithms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Ftable_of_algorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Ftable_of_algorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Ftable_of_algorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Ftable_of_algorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mnikander","download_url":"https://codeload.github.com/mnikander/table_of_algorithms/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Ftable_of_algorithms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30326891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-03-08T13:26:54.834Z","updated_at":"2026-03-10T06:32:06.615Z","avatar_url":"https://github.com/mnikander.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Table of algorithms\n\nThe notation is inspired by Haskell, but omits currying.\nThe notation is not fully consistent across the entire table.\nAll information is provided as is, please verify it yourself.\n\n| Name           | Function_Signature         | Upper Bound | Family     | Aliases    | Comments |\n| :---           | :---                       | :---        | :---       | :---       | :---     |\n| copy if        | f int int [c] -\u003e [c]       | O(n)        | copy       |            | various definitions exist with pointers, iterators, and integers |\n| copy           |   [a]         -\u003e [a]       | O(n)        | copy       |            | `copy        A := copy_if TRUE 0 (size A) A` |\n| filter         | f [a]         -\u003e [a]       | O(n)        | copy       | copy if    | `filter    F A := copy_if F 0 (size A) A` |\n| take           |   int [b]     -\u003e [b]       | O(n)        | copy       |            | `take      i A := copy 0 i B`|\n| take last      |   int [b]     -\u003e [b]       | O(n)        | copy       |            | `take_last i A := copy (size B)-i (size B) B`       |\n| drop           |   int [b]     -\u003e [b]       | O(n)        | copy       |            | `drop      i A := copy i (size B) B`       |\n| drop last      |   int [b]     -\u003e [b]       | O(n)        | copy       |            | `drop_last i A := copy 0 (size B)-i B` |\n| catenate       | f [a] [a]     -\u003e [a]       | O(n)        | copy       |            | |\n| map            | f [a]         -\u003e [b]       | O(n)        | map        | transform  | |\n| map (binary)   | f [a] [b]     -\u003e [c]       | O(n)        | map        | transform  | `binary_map F A B := map F (zip A B)`|\n| zip            |   [a] [b]     -\u003e [(a,b)]   | O(n)        | map        |            | |\n| reduce         | f  a  [b]     -\u003e  a        | O(n)        | reduce     |            | args: binary op, accumulator init, sequence |\n| fold left      | f  a  [b]     -\u003e  a        | O(n)        | reduce     | accumulate | |\n| fold right     | f  a  [b]     -\u003e  a        | O(n)        | reduce     |            | `fold_right := fold_left (reverse B)` |\n| map reduce     |f g a  [b]     -\u003e  a        | O(n)        | reduce     |inner product| note that in C++ f and g are reversed; `map_reduce f g init B   := reduce g init (map f B)` |\n| map reduce (binary)| f g a  [b] [c] -\u003e  a   | O(n)        | reduce     |inner product| note that in C++ f and g are reversed; `map_reduce f g init B C := reduce g init (map f (zip A B)` |\n| fill           |    a          -\u003e [a]       | O(n)        | copy, scan |            | |\n| iota           |    a   a      -\u003e [a]       | O(n)        | copy, scan |            | |\n| inclusive scan | f  a  [b]     -\u003e [a]       | O(n)        | scan       |            | |\n| exclusive scan | f  a  [b]     -\u003e [a]       | O(n)        | scan       |            | |\n| find           | f [a]         -\u003e int       | O(n)        | find       |            | |\n| contains       | f [a]         -\u003e bool      | O(n)        | find       |            | typically returns ptr instead of int, `contains F A := (find F A) != (size A)` |\n| mismatch       | f [a] [b]     -\u003e (int,int) | O(n)        | find       |            | typically returns (ptr, ptr) instead of (int, int), `mismatch  F A B := find F (zip A B)` |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnikander%2Ftable_of_algorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmnikander%2Ftable_of_algorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnikander%2Ftable_of_algorithms/lists"}