0.0.7 • Published 2 years ago

@cherdy/javascript-algorithms-and-data-structures v0.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

جافا سكريبت خوارزميات وهياكل البيانات

Build Status codecov

تحتوي هذا مقالة على أمثلة عديدة تستند إلى الخوارزميات الشائعة وهياكل البيانات في الجافا سكريبت.

كل خوارزمية وهياكل البيانات لها برنامج README منفصل خاص بها مع التفسيرات والروابط ذات الصلة لمزيد من القراءة (بما في ذلك تلك إلى مقاطع فيديو YouTube).

اقرأ هذا في لغات أخرى: 简体中文, 繁體中文, 한국어, 日本語, Polski, Français, Español, Português, Русский, Türk, Italiana, Deutsch

☝ ملاحضة هذا المشروع مخصص للاستخدام لأغراض التعلم والبحث فقط ، و ليست معدة للاستخدام في الإنتاج

هياكل البيانات

هياكل البيانات هي طريقة خاصة لتنظيم البيانات وتخزينها في جهاز الكمبيوتر بحيث يمكن الوصول إليها وتعديلها بكفاءة. بتعبير أدق ، هيكل البيانات هو مجموعة من البيانات القيم والعلاقات فيما بينها والوظائف أو العمليات التي يمكن تطبيقها عليها البيانات.

B - مبتدئ, A - المتقدمة

الخوارزميات

الخوارزمية هي تحديد لا لبس فيه لكيفية حل فئة من المشاكل. أنه مجموعة من القواعد التي تحدد بدقة تسلسل العمليات.

B - مبتدئ ، A - متقدم

الخوارزميات حسب الموضوع

الخوارزميات حسب النموذج

النموذج الحسابي هو طريقة أو نهج عام يكمن وراء تصميم الفصل من الخوارزميات. إنه تجريد أعلى من مفهوم الخوارزمية ، تمامًا مثل الخوارزمية هي تجريد أعلى من برنامج الكمبيوتر.

  • Branch & Bound - تذكر الحل الأقل تكلفة الموجود في كل مرحلة من مراحل التراجع البحث ، واستخدام تكلفة الحل الأقل تكلفة الموجود حتى الآن بحد أدنى لتكلفة الحل الأقل تكلفة للمشكلة ، من أجل تجاهل الحلول الجزئية بتكاليف أكبر من تم العثور على حل بأقل تكلفة حتى الآن. اجتياز BFS عادةً بالاشتراك مع اجتياز DFS لمساحة الحالة يتم استخدام الشجرة.

كيفية استخدام هذا المستودع

تثبيت كل التبعيات

npm install

قم بتشغيل ESLint

قد ترغب في تشغيله للتحقق من جودة الكود.

npm run lint

قم بإجراء جميع الاختبارات

npm test

قم بإجراء الاختبارات بالاسم

npm test -- 'LinkedList'

ملعب

يمكنك اللعب بهياكل البيانات والخوارزميات في ملف . /src/playground/playground.js والكتابة اختبارات لها في ./src/playground/__test__/playground.test.js.

ثم قم ببساطة بتشغيل الأمر التالي لاختبار ما إذا كان كود الملعب الخاص بك يعمل كما هو متوقع:

npm test -- 'playground'

معلومات مفيدة

المراجع

▶ هياكل البيانات والخوارزميات على موقع يوتيوب

Big O Notation

  • يتم استخدام Big O notation لتصنيف الخوارزميات وفقًا لكيفية نمو متطلبات وقت التشغيل أو المساحة مع نمو حجم الإدخال. قد تجد في الرسم البياني أدناه الأوامر الأكثر شيوعًا لنمو الخوارزميات المحددة في تBig O notation.

Big O graphs

مصدر: Big O Cheat Sheet.

فيما يلي قائمة ببعض رموز Big O notation الأكثر استخدامًا ومقارنات أدائها مقابل أحجام مختلفة من بيانات الإدخال.

Big O NotationComputations for 10 elementsComputations for 100 elementsComputations for 1000 elements
O(1)111
O(log N)369
O(N)101001000
O(N log N)306009000
O(N^2)100100001000000
O(2^N)10241.26e+291.07e+301
O(N!)36288009.3e+1574.02e+2567

تعقيد عمليات بنية البيانات

Data StructureAccessSearchInsertionDeletionComments
Array1nnn
Stacknn11
Queuenn11
Linked Listnn1n
Hash Table-nnnفي حالة وجود تكاليف دالة تجزئة مثالية ستكون O (1)
Binary Search Treennnnفي حالة توازن تكاليف الشجرة ستكون O (log (n))
B-Treelog(n)log(n)log(n)log(n)
Red-Black Treelog(n)log(n)log(n)log(n)
AVL Treelog(n)log(n)log(n)log(n)
Bloom Filter-11-الإيجابيات الكاذبة ممكنة أثناء البحث

تعقيد خوارزميات فرز الصفيف

NameBestAverageWorstMemoryStableComments
Bubble sortnn2n21نعم
Insertion sortnn2n21نعم
Selection sortn2n2n21لا
Heap sortn log(n)n log(n)n log(n)1لا
Merge sortn log(n)n log(n)n log(n)nنعم
Quick sortn log(n)n log(n)n2log(n)Noعادةً ما يتم إجراء الفرز السريع في مكانه مع مساحة مكدس O (log (n))
Shell sortn log(n)depends on gap sequencen (log(n))21لا
Counting sortn + rn + rn + rn + rYesr - أكبر رقم في المجموعة
Radix sortn * kn * kn * kn + kYesك - طول أطول مفتاح

مؤيدو المشروع

يمكنك دعم هذا المشروع عبر ❤️️ GitHub أو ❤️️ Patreon.

الناس الذين يدعمون هذا المشروع ∑ = 0

ℹ️ A few more projects and articles about JavaScript and algorithms on trekhleb.dev