{"id":13394275,"url":"https://github.com/trekhleb/javascript-algorithms","last_synced_at":"2025-05-12T14:48:08.884Z","repository":{"id":37243786,"uuid":"126577260","full_name":"trekhleb/javascript-algorithms","owner":"trekhleb","description":"📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings","archived":false,"fork":false,"pushed_at":"2025-02-12T16:19:59.000Z","size":13564,"stargazers_count":191140,"open_issues_count":364,"forks_count":30655,"subscribers_count":4306,"default_branch":"master","last_synced_at":"2025-05-05T13:51:13.544Z","etag":null,"topics":["algorithm","algorithms","computer-science","data-structures","interview","interview-preparation","javascript","javascript-algorithms"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/trekhleb.png","metadata":{"files":{"readme":"README.ar-AR.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null},"funding":{"github":"trekhleb","patreon":"trekhleb"}},"created_at":"2018-03-24T07:47:04.000Z","updated_at":"2025-05-05T11:30:00.000Z","dependencies_parsed_at":"2022-08-08T19:30:49.491Z","dependency_job_id":"45b8ae29-79a7-4f90-80e8-03967b3320bc","html_url":"https://github.com/trekhleb/javascript-algorithms","commit_stats":{"total_commits":1061,"total_committers":202,"mean_commits":5.252475247524752,"dds":"0.25070688030160226","last_synced_commit":"76617fa83ac9a8519f20c7a9c938e2d8ef2fd512"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trekhleb%2Fjavascript-algorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trekhleb%2Fjavascript-algorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trekhleb%2Fjavascript-algorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trekhleb%2Fjavascript-algorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trekhleb","download_url":"https://codeload.github.com/trekhleb/javascript-algorithms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253758206,"owners_count":21959548,"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","algorithms","computer-science","data-structures","interview","interview-preparation","javascript","javascript-algorithms"],"created_at":"2024-07-30T17:01:14.582Z","updated_at":"2025-05-12T14:48:08.858Z","avatar_url":"https://github.com/trekhleb.png","language":"JavaScript","readme":"# جافا سكريبت خوارزميات  وهياكل البيانات\n\n[![Build Status](https://travis-ci.org/trekhleb/javascript-algorithms.svg?branch=master)](https://travis-ci.org/trekhleb/javascript-algorithms)\n[![codecov](https://codecov.io/gh/trekhleb/javascript-algorithms/branch/master/graph/badge.svg)](https://codecov.io/gh/trekhleb/javascript-algorithms)\n\nتحتوي هذه المقالة على أمثلة عديدة تستند إلى الخوارزميات الشائعة وهياكل البيانات في الجافا سكريبت.\n\nكل خوارزمية وهياكل البيانات لها برنامج README منفصل خاص بها\nمع التفسيرات والروابط ذات الصلة لمزيد من القراءة (بما في ذلك تلك\nإلى مقاطع فيديو YouTube).\n\n\n_اقرأ هذا في لغات أخرى:_\n[_简体中文_](README.zh-CN.md),\n[_繁體中文_](README.zh-TW.md),\n[_한국어_](README.ko-KR.md),\n[_日本語_](README.ja-JP.md),\n[_Polski_](README.pl-PL.md),\n[_Français_](README.fr-FR.md),\n[_Español_](README.es-ES.md),\n[_Português_](README.pt-BR.md),\n[_Русский_](README.ru-RU.md),\n[_Türk_](README.tr-TR.md),\n[_Italiana_](README.it-IT.md),\n[_Tiếng Việt_](README.vi-VN.md),\n[_Deutsch_](README.de-DE.md),\n[_Uzbek_](README.uz-UZ.md)\n[_עברית_](README.he-IL.md)\n\n ☝ ملاحضة هذا المشروع مخصص للاستخدام لأغراض التعلم والبحث\nفقط ، و ** ليست ** معدة للاستخدام في **الإنتاج**\n\n## هياكل البيانات\n\nهياكل البيانات هي طريقة خاصة لتنظيم البيانات وتخزينها في جهاز الكمبيوتر بحيث\nيمكن الوصول إليها وتعديلها بكفاءة. بتعبير أدق ، هيكل البيانات هو مجموعة من البيانات\nالقيم والعلاقات فيما بينها والوظائف أو العمليات التي يمكن تطبيقها عليها\nالبيانات.\n\n\n`B` - مبتدئ, `A` - المتقدمة\n\n* `B` [قائمة مرتبطة](src/data-structures/linked-list)\n* `B` [قائمة مرتبطة بشكل مضاعف](src/data-structures/doubly-linked-list)\n* `B` [طابور, Queue](src/data-structures/queue)\n* `B` [كومة](src/data-structures/stack)\n* `B` [جدول التجزئة](src/data-structures/hash-table)\n* `B` [كومة](src/data-structures/heap) -الحد الأقصى والحد الأدنى من إصدارات الكومة\n* `B` [طابور الأولوية](src/data-structures/priority-queue)\n* `A` [تري](src/data-structures/trie)\n* `A` [شجرة](src/data-structures/tree)\n  * `A` [شجرة البحث الثنائية](src/data-structures/tree/binary-search-tree)\n  * `A` [شجرة AVL](src/data-structures/tree/avl-tree)\n  * `A` [شجرة الأحمر والأسود](src/data-structures/tree/red-black-tree)\n  * `A` [شجرة القطعة](src/data-structures/tree/segment-tree) - مع أمثلة على استفسارات النطاق الأدنى / الأقصى / المجموع\n  * `A` [شجرة فينويك](src/data-structures/tree/fenwick-tree) (شجرة ثنائية مفهرسة)\n* `A` [Graph](src/data-structures/graph) (كلاهما موجه وغير موجه)\n* `A` [مجموعة منفصلة](src/data-structures/disjoint-set)\n* `A` [مرشح بلوم](src/data-structures/bloom-filter)\n\n\n## الخوارزميات\n\nالخوارزمية هي تحديد لا لبس فيه لكيفية حل فئة من المشاكل. أنه\nمجموعة من القواعد التي تحدد بدقة تسلسل العمليات.\n\n`B` - مبتدئ ، `A` - متقدم\n\n\n### الخوارزميات حسب الموضوع\n\n* **رياضيات**\n  * `B` [معالجة البت](src/algorithms/math/bits)\n  * `B` [عاملي](src/algorithms/math/factorial)\n  * `B` [رقم فيبوناتشي](src/algorithms/math/fibonacci) - الإصدارات الكلاسيكية والمغلقة\n  * `B` [اختبار البدائية](src/algorithms/math/primality-test) (طريقة تقسيم المحاكمة)\n  * `B` [الخوارزمية الإقليدية](src/algorithms/math/euclidean-algorithm) - احسب القاسم المشترك الأكبر (GCD)\n  * `B` [أقل مضاعف مشترك](src/algorithms/math/least-common-multiple) (LCM)\n  * `B` [منخل إراتوستينس](src/algorithms/math/sieve-of-eratosthenes) - إيجاد جميع الأعداد الأولية حتى أي حد معين\n  * `B` [هي قوة اثنين](src/algorithms/math/is-power-of-two) - تحقق مما إذا كان الرقم هو قوة اثنين (الخوارزميات الساذجة والبتية)\n  * `B` [مثلث باسكال](src/algorithms/math/pascal-triangle)\n  * `B` [عدد مركب](src/algorithms/math/complex-number) - الأعداد المركبة والعمليات الأساسية معهم\n  * `B` [راديان ودرجة](src/algorithms/math/radian) - راديان لدرجة التحويل والعكس\n  * `B` [تشغيل سريع](src/algorithms/math/fast-powering)\n  * `B` [طريقة هورنر](src/algorithms/math/horner-method) - تقييم متعدد الحدود\n  * `A` [قسم صحيح](src/algorithms/math/integer-partition)\n  * `A` [الجذر التربيعي](src/algorithms/math/square-root) - طريقة نيوتن\n  * `A` [خوارزمية ليو هوي π](src/algorithms/math/liu-hui) - π حسابات تقريبية على أساس N-gons\n  * `A` [تحويل فورييه المنفصل](src/algorithms/math/fourier-transform) - حلل وظيفة الوقت (إشارة) في الترددات التي يتكون منها\n* **مجموعات**\n  * `B` [المنتج الديكارتي](src/algorithms/sets/cartesian-product) - منتج من مجموعات متعددة\n  * `B` [فيشر ييتس شافل](src/algorithms/sets/fisher-yates) - التقليب العشوائي لتسلسل محدود\n  * `A` [مجموعة الطاقة](src/algorithms/sets/power-set) - جميع المجموعات الفرعية للمجموعة (حلول البت والتتبع التراجعي)\n  * `A` [التباديل](src/algorithms/sets/permutations) (مع وبدون التكرار)\n  * `A` [مجموعات](src/algorithms/sets/combinations) (مع وبدون التكرار)\n  * `A` [أطول نتيجة مشتركة](src/algorithms/sets/longest-common-subsequence) (LCS)\n  * `A` [أطول زيادة متتالية](src/algorithms/sets/longest-increasing-subsequence)\n  * `A` [أقصر تسلسل فائق مشترك](src/algorithms/sets/shortest-common-supersequence) (SCS)\n  * `A` [مشكلة حقيبة الظهر](src/algorithms/sets/knapsack-problem) - \"0/1\" و \"غير منضم\"\n  * `A` [الحد الأقصى من Subarray](src/algorithms/sets/maximum-subarray) -إصدارات \"القوة الغاشمة\" و \"البرمجة الديناميكية\" (كادان)\n  * `A` [مجموع الجمع](src/algorithms/sets/combination-sum) - ابحث عن جميع التركيبات التي تشكل مبلغًا محددًا\n* **سلاسل**\n  * `B` [مسافة هامنج](src/algorithms/string/hamming-distance) - عدد المواقف التي تختلف فيها الرموز\n  * `A` [المسافة ليفنشتاين](src/algorithms/string/levenshtein-distance) - الحد الأدنى لمسافة التحرير بين تسلسلين\n  * `A` [خوارزمية كنوث - موريس - برات](src/algorithms/string/knuth-morris-pratt) (خوارزمية KMP) - بحث السلسلة الفرعية (مطابقة النمط)\n  * `A` [خوارزمية Z](src/algorithms/string/z-algorithm) - بحث سلسلة فرعية (مطابقة النمط)\n  * `A` [خوارزمية رابين كارب](src/algorithms/string/rabin-karp) - بحث السلسلة الفرعية\n  * `A` [أطول سلسلة فرعية مشتركة](src/algorithms/string/longest-common-substring)\n  * `A` [مطابقة التعبير العادي](src/algorithms/string/regular-expression-matching)\n* **عمليات البحث**\n  * `B` [البحث الخطي](src/algorithms/search/linear-search)\n  * `B` [بحث سريع](src/algorithms/search/jump-search) (أو حظر البحث) - ابحث في مصفوفة مرتبة\n  * `B` [بحث ثنائي](src/algorithms/search/binary-search) - البحث في مجموعة مرتبة\n  * `B` [بحث الاستيفاء](src/algorithms/search/interpolation-search) - البحث في مجموعة مرتبة موزعة بشكل موحد\n\n* **فرز**\n  * `B` [Bubble Sort](src/algorithms/sorting/bubble-sort)\n  * `B` [Selection Sort](src/algorithms/sorting/selection-sort)\n  * `B` [Insertion Sort](src/algorithms/sorting/insertion-sort)\n  * `B` [Heap Sort](src/algorithms/sorting/heap-sort)\n  * `B` [Merge Sort](src/algorithms/sorting/merge-sort)\n  * `B` [Quicksort](src/algorithms/sorting/quick-sort) - عمليات التنفيذ في المكان وغير في المكان\n  * `B` [Shellsort](src/algorithms/sorting/shell-sort)\n  * `B` [Counting Sort](src/algorithms/sorting/counting-sort)\n  * `B` [Radix Sort](src/algorithms/sorting/radix-sort)\n* **القوائم المرتبطة**\n  * `B` [Straight Traversal](src/algorithms/linked-list/traversal)\n  * `B` [Reverse Traversal](src/algorithms/linked-list/reverse-traversal)\n* **الأشجار**\n  * `B` [Depth-First Search](src/algorithms/tree/depth-first-search) (DFS)\n  * `B` [Breadth-First Search](src/algorithms/tree/breadth-first-search) (BFS)\n* **الرسوم البيانية**\n  * `B` [Depth-First Search](src/algorithms/graph/depth-first-search) (DFS)\n  * `B` [Breadth-First Search](src/algorithms/graph/breadth-first-search) (BFS)\n  * `B` [Kruskal’s Algorithm](src/algorithms/graph/kruskal) - إيجاد الحد الأدنى من شجرة الامتداد (MST) للرسم البياني الموزون غير الموجه\n  * `A` [Dijkstra Algorithm](src/algorithms/graph/dijkstra) -إيجاد أقصر المسارات لجميع رؤوس الرسم البياني من رأس واحد\n  * `A` [Bellman-Ford Algorithm](src/algorithms/graph/bellman-ford) - إيجاد أقصر المسارات لجميع رؤوس الرسم البياني من رأس واحد\n  * `A` [Floyd-Warshall Algorithm](src/algorithms/graph/floyd-warshall) - إيجاد أقصر المسارات بين جميع أزواج الرؤوس\n  * `A` [Detect Cycle](src/algorithms/graph/detect-cycle) - لكل من الرسوم البيانية الموجهة وغير الموجهة (الإصدارات القائمة على DFS و Disjoint Set)\n  * `A` [Prim’s Algorithm](src/algorithms/graph/prim) - إيجاد الحد الأدنى من شجرة الامتداد (MST) للرسم البياني الموزون غير الموجه\n  * `A` [Topological Sorting](src/algorithms/graph/topological-sorting) - طريقة البحث العمق الأول (DFS)\n  * `A` [Articulation Points](src/algorithms/graph/articulation-points) - خوارزمية تارجان (تعتمد على DFS)\n  * `A` [Bridges](src/algorithms/graph/bridges) - خوارزمية تعتمد على DFS\n  * `A` [Eulerian Path and Eulerian Circuit](src/algorithms/graph/eulerian-path) - خوارزمية فلوري - قم بزيارة كل حافة مرة واحدة بالضبط\n  * `A` [Hamiltonian Cycle](src/algorithms/graph/hamiltonian-cycle) - قم بزيارة كل قمة مرة واحدة بالضبط\n  * `A` [Strongly Connected Components](src/algorithms/graph/strongly-connected-components) - خوارزمية Kosaraju\n  * `A` [Travelling Salesman Problem](src/algorithms/graph/travelling-salesman) - أقصر طريق ممكن يزور كل مدينة ويعود إلى المدينة الأصلية\n* **التشفير\n  * `B` [Polynomial Hash](src/algorithms/cryptography/polynomial-hash) - المتداول دالة التجزئة على أساس متعدد الحدود\n  * `B` [Caesar Cipher](src/algorithms/cryptography/caesar-cipher) - استبدال بسيط للشفرات\n* **التعلم الالي**\n  * `B` [NanoNeuron](https://github.com/trekhleb/nano-neuron) - 7 وظائف JS بسيطة توضح كيف يمكن للآلات أن تتعلم بالفعل (الانتشار إلى الأمام / الخلف)\n* **غير مصنف**\n  * `B` [Tower of Hanoi](src/algorithms/uncategorized/hanoi-tower)\n  * `B` [Square Matrix Rotation](src/algorithms/uncategorized/square-matrix-rotation) - خوارزمية في المكان\n  * `B` [Jump Game](src/algorithms/uncategorized/jump-game) - التراجع ، البرمجة الديناميكية (من أعلى إلى أسفل + من أسفل إلى أعلى) والأمثلة الجشعة\n  * `B` [Unique Paths](src/algorithms/uncategorized/unique-paths) - التراجع والبرمجة الديناميكية والأمثلة القائمة على مثلث باسكال\n  * `B` [Rain Terraces](src/algorithms/uncategorized/rain-terraces) - محاصرة مشكلة مياه الأمطار (البرمجة الديناميكية وإصدارات القوة الغاشمة)\n  * `B` [Recursive Staircase](src/algorithms/uncategorized/recursive-staircase) - احسب عدد الطرق للوصول إلى القمة (4 حلول)\n  * `A` [N-Queens Problem](src/algorithms/uncategorized/n-queens)\n  * `A` [Knight's Tour](src/algorithms/uncategorized/knight-tour)\n\n### الخوارزميات حسب النموذج\n\nالنموذج الحسابي هو طريقة أو نهج عام يكمن وراء تصميم الفصل\nمن الخوارزميات. إنه تجريد أعلى من مفهوم الخوارزمية ، تمامًا مثل\nالخوارزمية هي تجريد أعلى من برنامج الكمبيوتر.\n\n* **القوة الغاشمة** - انظر في جميع الاحتمالات وحدد الحل الأفضل\n  * `B` [Linear Search](src/algorithms/search/linear-search)\n  * `B` [Rain Terraces](src/algorithms/uncategorized/rain-terraces) - محاصرة مشكلة مياه الأمطار\n  * `B` [Recursive Staircase](src/algorithms/uncategorized/recursive-staircase) - احسب عدد الطرق للوصول إلى القمة\n  * `A` [Maximum Subarray](src/algorithms/sets/maximum-subarray)\n  * `A` [Travelling Salesman Problem](src/algorithms/graph/travelling-salesman) - أقصر طريق ممكن يزور كل مدينة ويعود إلى المدينة الأصلية\n  * `A` [Discrete Fourier Transform](src/algorithms/math/fourier-transform) - حلل وظيفة الوقت (إشارة) في الترددات التي يتكون منها\n* **جشع** - اختر الخيار الأفضل في الوقت الحالي ، دون أي اعتبار للمستقبل\n  * `B` [Jump Game](src/algorithms/uncategorized/jump-game)\n  * `A` [Unbound Knapsack Problem](src/algorithms/sets/knapsack-problem)\n  * `A` [Dijkstra Algorithm](src/algorithms/graph/dijkstra) - إيجاد أقصر مسار لجميع رؤوس الرسم البياني\n  * `A` [Prim’s Algorithm](src/algorithms/graph/prim) - إيجاد الحد الأدنى من شجرة الامتداد (MST) للرسم البياني الموزون غير الموجه\n  * `A` [Kruskal’s Algorithm](src/algorithms/graph/kruskal) - إيجاد الحد الأدنى من شجرة الامتداد (MST) للرسم البياني الموزون غير الموجه\n* **فرق تسد** - قسّم المشكلة إلى أجزاء أصغر ثم حل تلك الأجزاء\n  * `B` [Binary Search](src/algorithms/search/binary-search)\n  * `B` [Tower of Hanoi](src/algorithms/uncategorized/hanoi-tower)\n  * `B` [Pascal's Triangle](src/algorithms/math/pascal-triangle)\n  * `B` [Euclidean Algorithm](src/algorithms/math/euclidean-algorithm) - حساب القاسم المشترك الأكبر (GCD)\n  * `B` [Merge Sort](src/algorithms/sorting/merge-sort)\n  * `B` [Quicksort](src/algorithms/sorting/quick-sort)\n  * `B` [Tree Depth-First Search](src/algorithms/tree/depth-first-search) (DFS)\n  * `B` [Graph Depth-First Search](src/algorithms/graph/depth-first-search) (DFS)\n  * `B` [Jump Game](src/algorithms/uncategorized/jump-game)\n  * `B` [Fast Powering](src/algorithms/math/fast-powering)\n  * `A` [Permutations](src/algorithms/sets/permutations) (مع التكرار وبدونه)\n  * `A` [Combinations](src/algorithms/sets/combinations) (مع التكرار وبدونه)\n* **البرمجة الديناميكية** - بناء حل باستخدام الحلول الفرعية التي تم العثور عليها مسبقًا\n  * `B` [Fibonacci Number](src/algorithms/math/fibonacci)\n  * `B` [Jump Game](src/algorithms/uncategorized/jump-game)\n  * `B` [Unique Paths](src/algorithms/uncategorized/unique-paths)\n  * `B` [Rain Terraces](src/algorithms/uncategorized/rain-terraces) - محاصرة مشكلة مياه الأمطار\n  * `B` [Recursive Staircase](src/algorithms/uncategorized/recursive-staircase) - احسب عدد الطرق للوصول إلى القمة\n  * `A` [Levenshtein Distance](src/algorithms/string/levenshtein-distance) - الحد الأدنى لمسافة التحرير بين تسلسلين\n  * `A` [Longest Common Subsequence](src/algorithms/sets/longest-common-subsequence) (LCS)\n  * `A` [Longest Common Substring](src/algorithms/string/longest-common-substring)\n  * `A` [Longest Increasing Subsequence](src/algorithms/sets/longest-increasing-subsequence)\n  * `A` [Shortest Common Supersequence](src/algorithms/sets/shortest-common-supersequence)\n  * `A` [0/1 Knapsack Problem](src/algorithms/sets/knapsack-problem)\n  * `A` [Integer Partition](src/algorithms/math/integer-partition)\n  * `A` [Maximum Subarray](src/algorithms/sets/maximum-subarray)\n  * `A` [Bellman-Ford Algorithm](src/algorithms/graph/bellman-ford) - إيجاد أقصر مسار لجميع رؤوس الرسم البياني\n  * `A` [Floyd-Warshall Algorithm](src/algorithms/graph/floyd-warshall) - إيجاد أقصر المسارات بين جميع أزواج الرؤوس\n  * `A` [Regular Expression Matching](src/algorithms/string/regular-expression-matching)\n* **التراجع** - على غرار القوة الغاشمة ، حاول إنشاء جميع الحلول الممكنة ، ولكن في كل مرة تقوم فيها بإنشاء الحل التالي الذي تختبره\nإذا استوفت جميع الشروط ، وعندها فقط استمر في إنشاء الحلول اللاحقة. خلاف ذلك ، تراجع ، واذهب إلى\nطريق مختلف لإيجاد حل. عادةً ما يتم استخدام اجتياز DFS لمساحة الدولة.\n  * `B` [Jump Game](src/algorithms/uncategorized/jump-game)\n  * `B` [Unique Paths](src/algorithms/uncategorized/unique-paths)\n  * `B` [Power Set](src/algorithms/sets/power-set) - جميع المجموعات الفرعية للمجموعة\n  * `A` [Hamiltonian Cycle](src/algorithms/graph/hamiltonian-cycle) - قم بزيارة كل قمة مرة واحدة بالضبط\n  * `A` [N-Queens Problem](src/algorithms/uncategorized/n-queens)\n  * `A` [Knight's Tour](src/algorithms/uncategorized/knight-tour)\n  * `A` [Combination Sum](src/algorithms/sets/combination-sum) - ابحث عن جميع التركيبات التي تشكل مبلغًا محددًا\n\n\n* ** Branch \u0026 Bound ** - تذكر الحل الأقل تكلفة الموجود في كل مرحلة من مراحل التراجع\nالبحث ، واستخدام تكلفة الحل الأقل تكلفة الموجود حتى الآن بحد أدنى لتكلفة\nالحل الأقل تكلفة للمشكلة ، من أجل تجاهل الحلول الجزئية بتكاليف أكبر من\nتم العثور على حل بأقل تكلفة حتى الآن. اجتياز BFS عادةً بالاشتراك مع اجتياز DFS لمساحة الحالة\nيتم استخدام الشجرة.\n\n## كيفية استخدام هذا المستودع\n\n**تثبيت كل التبعيات**\n```\nnpm install\n```\n\n**قم بتشغيل ESLint**\n\nقد ترغب في تشغيله للتحقق من جودة الكود.\n\n```\nnpm run lint\n```\n\n**قم بإجراء جميع الاختبارات**\n```\nnpm test\n```\n\n**قم بإجراء الاختبارات بالاسم**\n```\nnpm test -- 'LinkedList'\n```\n\n**ملعب**\n\nيمكنك اللعب بهياكل البيانات والخوارزميات في ملف `. /src/playground/playground.js` والكتابة\nاختبارات لها في `./src/playground/__test__/playground.test.js`.\n\nثم قم ببساطة بتشغيل الأمر التالي لاختبار ما إذا كان كود الملعب الخاص بك يعمل كما هو متوقع:\n\n```\nnpm test -- 'playground'\n```\n\n## معلومات مفيدة\n\n### المراجع\n\n[▶ هياكل البيانات والخوارزميات على موقع يوتيوب](https://www.youtube.com/playlist?list=PLLXdhg_r2hKA7DPDsunoDZ-Z769jWn4R8)\n\n### Big O Notation\n\n* يتم استخدام **Big O notation** لتصنيف الخوارزميات وفقًا لكيفية نمو متطلبات وقت التشغيل أو المساحة مع نمو حجم الإدخال.\nقد تجد في الرسم البياني أدناه الأوامر الأكثر شيوعًا لنمو الخوارزميات المحددة في تBig O notation.\n\n![Big O graphs](./assets/big-o-graph.png)\n\nمصدر: [Big O Cheat Sheet](http://bigocheatsheet.com/).\n\nفيما يلي قائمة ببعض رموز Big O notation الأكثر استخدامًا ومقارنات أدائها مقابل أحجام مختلفة من بيانات الإدخال.\n\n| Big O Notation | Computations for 10 elements | Computations for 100 elements | Computations for 1000 elements  |\n| -------------- | ---------------------------- | ----------------------------- | ------------------------------- |\n| **O(1)**       | 1                            | 1                             | 1                               |\n| **O(log N)**   | 3                            | 6                             | 9                               |\n| **O(N)**       | 10                           | 100                           | 1000                            |\n| **O(N log N)** | 30                           | 600                           | 9000                            |\n| **O(N^2)**     | 100                          | 10000                         | 1000000                         |\n| **O(2^N)**     | 1024                         | 1.26e+29                      | 1.07e+301                       |\n| **O(N!)**      | 3628800                      | 9.3e+157                      | 4.02e+2567                      |\n\n### تعقيد عمليات بنية البيانات\n\n| Data Structure          | Access    | Search    | Insertion | Deletion  | Comments  |\n| ----------------------- | :-------: | :-------: | :-------: | :-------: | :-------- |\n| **Array**               | 1         | n         | n         | n         |           |\n| **Stack**               | n         | n         | 1         | 1         |           |\n| **Queue**               | n         | n         | 1         | 1         |           |\n| **Linked List**         | n         | n         | 1         | n         |           |\n| **Hash Table**          | -         | n         | n         | n         |في حالة وجود تكاليف دالة تجزئة مثالية ستكون O (1)|\n| **Binary Search Tree**  | n         | n         | n         | n         | في حالة توازن تكاليف الشجرة ستكون O (log (n))|\n| **B-Tree**              | log(n)    | log(n)    | log(n)    | log(n)    |           |\n| **Red-Black Tree**      | log(n)    | log(n)    | log(n)    | log(n)    |           |\n| **AVL Tree**            | log(n)    | log(n)    | log(n)    | log(n)    |           |\n| **Bloom Filter**        | -         | 1         | 1         | -         |الإيجابيات الكاذبة ممكنة أثناء البحث|\n\n### تعقيد خوارزميات فرز الصفيف\n\n| Name                  | Best            | Average             | Worst               | Memory    | Stable    | Comments  |\n| --------------------- | :-------------: | :-----------------: | :-----------------: | :-------: | :-------: | :-------- |\n| **Bubble sort**       | n               | n\u003csup\u003e2\u003c/sup\u003e       | n\u003csup\u003e2\u003c/sup\u003e       | 1         | نعم       |           |\n| **Insertion sort**    | n               | n\u003csup\u003e2\u003c/sup\u003e       | n\u003csup\u003e2\u003c/sup\u003e       | 1         | نعم       |           |\n| **Selection sort**    | n\u003csup\u003e2\u003c/sup\u003e   | n\u003csup\u003e2\u003c/sup\u003e       | n\u003csup\u003e2\u003c/sup\u003e       | 1         | لا        |           |\n| **Heap sort**         | n\u0026nbsp;log(n)   | n\u0026nbsp;log(n)       | n\u0026nbsp;log(n)       | 1         | لا        |           |\n| **Merge sort**        | n\u0026nbsp;log(n)   | n\u0026nbsp;log(n)       | n\u0026nbsp;log(n)       | n         | نعم       |           |\n| **Quick sort**        | n\u0026nbsp;log(n)   | n\u0026nbsp;log(n)       | n\u003csup\u003e2\u003c/sup\u003e       | log(n)    | No        | عادةً ما يتم إجراء الفرز السريع في مكانه مع مساحة مكدس O (log (n))|\n| **Shell sort**        | n\u0026nbsp;log(n)   | depends on gap sequence   | n\u0026nbsp;(log(n))\u003csup\u003e2\u003c/sup\u003e  | 1         | لا       |           |\n| **Counting sort**     | n + r           | n + r               | n + r               | n + r     | Yes       |r - أكبر رقم في المجموعة|\n| **Radix sort**        | n * k           | n * k               | n * k               | n + k     | Yes       | ك - طول أطول مفتاح |\n\n## مؤيدو المشروع\n\n\u003e يمكنك دعم هذا المشروع عبر ❤️️ [GitHub](https://github.com/sponsors/trekhleb) أو ❤️️ [Patreon](https://www.patreon.com/trekhleb).\n\n[الناس الذين يدعمون هذا المشروع](https://github.com/trekhleb/javascript-algorithms/blob/master/BACKERS.md) `∑ = 0`\n\n\u003e ℹ️ A few more [projects](https://trekhleb.dev/projects/) and [articles](https://trekhleb.dev/blog/) about JavaScript and algorithms on [trekhleb.dev](https://trekhleb.dev)\n","funding_links":["https://github.com/sponsors/trekhleb","https://patreon.com/trekhleb","https://www.patreon.com/trekhleb"],"categories":["JavaScript","Algorithms and Data Structures","Javascript","😚 Welcome","Algorithm and Data Structures","algorithm","Tabla de Contenido","Data structures and Algorithms","Index","General knowledge","前端相关","目录","Algorithm","📚 Books","Programming","This repo contains the list of awesome repo present in github. A tribute to the freely available awesome educational resources.","Videos, lectures, (e)books \u0026 courses","Don't forget to give a :star: to make the project popular","Algorithms","Misc","Shell","Learn/Book/List","算法","Packages","HarmonyOS","七、GitHub 优质仓库精选","计算机编程 数据结构与算法","Understanding the Theory and the fundamentals of some super-popular Algorithm questions","Chosen Websites","Misc [🔝](#readme)","Computer science","▶️ Content","algorithms","JavaScript Algorithms","Github","Extensões","学习资源","书签","javascript","🌟 Top GitHub Repositories for Frontend Development","🧑‍💻 Full Stack Development","Install script","👨‍💻 Programming","Tutorials","Github Libraries","\u003e 100K ⭐️","大杂烩","有趣","Programming languages","Computer Science","武器库","General Programming","Table of Contents","💻 三、开发与学习相关"],"sub_categories":["Career","编程软实力","Algorithms","React Components","Other","Mad science","Windows Manager","面试","网络服务_其他","Awesome repositories","Algorithms, data structures and patterns","算法项目","算法","JavaScript","🎨 Frontend","websites to study from","其它","zsh 插件","ONLINE Resources","🧮 3.1 算法学习","End to End Testing"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrekhleb%2Fjavascript-algorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrekhleb%2Fjavascript-algorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrekhleb%2Fjavascript-algorithms/lists"}