אלגוריתמים ומבני נתונים ב-JavaScript

October 22, 2025 · View on GitHub

CI codecov גודל המאגר

מאגר זה מכיל דוגמאות מבוססות JavaScript של אלגוריתמים ומבני נתונים פופולריים רבים.

לכל אלגוריתם ומבנה נתונים יש README משלו עם הסברים קשורים וקישורים לקריאה נוספת (כולל קישורים לסרטוני YouTube).

קרא זאת בשפות אחרות: 简体中文, 繁體中文, 한국어, 日本語, Polski, Français, Español, Português, Русский, Türkçe, Italiana, Bahasa Indonesia, Українська, Arabic, Tiếng Việt, Deutsch, Uzbek

מבני נתונים

מבנה נתונים הוא דרך מסוימת לארגן ולאחסן נתונים במחשב כך שניתן לגשת אליהם ולשנות אותם ביעילות. ליתר דיוק, מבנה נתונים הוא אוסף של ערכי נתונים, היחסים ביניהם, והפונקציות או הפעולות שניתן ליישם על הנתונים.

זכור שלכל מבנה נתונים יש את היתרונות והחסרונות שלו. חשוב לשים לב יותר לסיבה שבגללה אתה בוחר מבנה נתונים מסוים מאשר לאופן היישום שלו.

B - מתחיל, A - מתקדם

אלגוריתמים

אלגוריתם הוא מפרט חד משמעי כיצד לפתור סוג של בעיות. זוהי קבוצה של כללים המגדירים במדויק רצף של פעולות.

B - מתחיל, A - מתקדם

אלגוריתמים לפי נושא

אלגוריתמים לפי פרדיגמה

פרדיגמה אלגוריתמית היא שיטה או גישה כללית המונחת בבסיס התכנון של מחלקת אלגוריתמים. זוהי הפשטה גבוהה יותר מהמושג של אלגוריתם, בדיוק כפי שאלגוריתם הוא הפשטה גבוהה יותר מתוכנית מחשב.

כיצד להשתמש במאגר זה

התקנת כל התלויות

npm install

הרצת ESLint

ייתכן שתרצה להריץ אותו כדי לבדוק את איכות הקוד.

npm run lint

הרצת כל הבדיקות

npm test

הרצת בדיקות לפי שם

npm test -- 'LinkedList'

פתרון בעיות

אם הלינטינג או הבדיקות נכשלים, נסה למחוק את התיקייה node_modules ולהתקין מחדש את חבילות npm:

rm -rf ./node_modules
npm i

בנוסף, ודא שאתה משתמש בגרסת Node נכונה (>=16). אם אתה משתמש ב-nvm לניהול גרסאות Node, תוכל להריץ nvm use מתיקיית השורש של הפרויקט והגרסה הנכונה תיבחר.

שטח משחקים

אתה יכול לשחק עם מבני נתונים ואלגוריתמים בקובץ ./src/playground/playground.js ולכתוב בדיקות עבורו ב-./src/playground/__test__/playground.test.js.

לאחר מכן פשוט הרץ את הפקודה הבאה כדי לבדוק אם קוד שטח המשחקים שלך עובד כמצופה:

npm test -- 'playground'

מידע שימושי

הפניות

סימון ה-O הגדול

סימון ה-O הגדול משמש לסיווג אלגוריתמים לפי כיצד זמן הריצה או דרישות המרחב שלהם גדלים ככל שגודל הקלט גדל. בתרשים שלהלן תוכל למצוא את הסדרים הנפוצים ביותר של צמיחת אלגוריתמים המצוינים בסימון ה-O הגדול.

גרפי ה-O הגדול

מקור: Big O Cheat Sheet.

להלן רשימה של כמה מסימוני ה-O הגדול הנפוצים ביותר והשוואות הביצועים שלהם מול גדלים שונים של נתוני קלט.

סימון ה-O הגדולחישובים ל-10 אלמנטיםחישובים ל-100 אלמנטיםחישובים ל-1000 אלמנטים
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

מורכבות פעולות מבני נתונים

מבנה נתוניםגישהחיפושהכנסהמחיקההערות
מערך1nnn
מחסניתnn11
תורnn11
רשימה מקושרתnn1n
טבלת גיבוב-nnnבמקרה של פונקציית גיבוב מושלמת, העלויות יהיו O(1)
עץ חיפוש בינאריnnnnבמקרה של עץ מאוזן, העלויות יהיו O(log(n))
עץ Blog(n)log(n)log(n)log(n)
עץ אדום-שחורlog(n)log(n)log(n)log(n)
עץ AVLlog(n)log(n)log(n)log(n)
מסנן בלום-11-תוצאות חיוביות שגויות אפשריות בעת חיפוש

מורכבות אלגוריתמי מיון מערכים

שםהטוב ביותרממוצעהגרוע ביותרזיכרוןיציבהערות
מיון בועותnn2n21כן
מיון הכנסהnn2n21כן
מיון בחירהn2n2n21לא
מיון ערימהn log(n)n log(n)n log(n)1לא
מיון מיזוגn log(n)n log(n)n log(n)nכן
מיון מהירn log(n)n log(n)n2log(n)לאמיון מהיר בדרך כלל מבוצע במקום עם O(log(n)) שטח מחסנית
מיון צדפותn log(n)תלוי ברצף הפערn (log(n))21לא
מיון ספירהn + rn + rn + rn + rכןr - המספר הגדול ביותר במערך
מיון בסיסn * kn * kn * kn + kכןk - אורך המפתח הארוך ביותר

תומכי הפרויקט

אתה יכול לתמוך בפרויקט זה דרך ❤️️ GitHub או ❤️️ Patreon.

אנשים שתומכים בפרויקט זה ∑ = 1

מחבר

@trekhleb

כמה פרויקטים ומאמרים נוספים על JavaScript ואלגוריתמים ב-trekhleb.dev* B [משחק הקפיצות](src/algorithms/uncategor * B [חיפוש בינארי](src/algorithms