java algorithms collections
1.0.0
مجموعة مخصصة للبيانات للمقابلة الفنية لدور مطور Java Junior.
انظر القائمة الكاملة هنا
n في التعقيد الزمني - عدد العناصر في المدخلات.
n في تعقيد الفضاء - حجم الإدخال في وحدات البتات اللازمة لتمثيل المدخلات.
| يكتب | اسم | توضيح | حالة | مثال |
|---|---|---|---|---|
O(1) | وقت ثابت | يتم تنفيذ الخوارزمية بنفس عدد المرات في كل مرة ، بغض النظر عن حجم المدخلات | ممتاز | ابحث في جدول التجزئة بواسطة المفتاح |
O(log n) | لوجاريتمية الوقت | يزداد وقت التنفيذ ببطء شديد مقارنة بزيادة حجم بيانات الإدخال | ممتاز | البحث الثنائي (المتوسط) |
O(n) | الوقت الخطي | وقت التنفيذ يتناسب خطيًا مع حجم بيانات الإدخال | جيد | البحث عن القوة الغاشمة |
O(n + k) | الوقت مجتمعة/مضافة | التعقيد المشترك بين اثنين من المدخلات المنفصلة | جيد | عد النوع |
O(n log n) | وقت شبه خاطئ | مع زيادة حجم الإدخال ، يزداد عدد الانقسامات اللازمة لحل المشكلة ببطء بسبب نمو اللوغاريتمي | سيء | دمج الفرز ، نوع الكومة |
O(n^2) | الوقت التربيعي | يتضمن التكرارات المتداخلة أو المقارنات لكل عنصر | فظيع | نوع الاختيار |
O(2^n) | الوقت الأسي | يتضمن البحث الشامل أو التعداد لجميع المجموعات الممكنة من المدخلات ، ويزيد وقت التنفيذ بشكل كبير | فظيع | TSP (البرمجة الديناميكية) |
O(n!) | وقت العامل | يتضمن البحث الشامل أو التعداد لجميع المجموعات الممكنة من المدخلات ، ويزداد وقت التنفيذ على نحو عام | فظيع | TSP (القوة الغاشمة) |
| يكتب | اسم | توضيح | حالة | مثال |
|---|---|---|---|---|
O(1) | مساحة ثابتة | تتطلب الخوارزمية كمية ثابتة من الذاكرة الإضافية ، بغض النظر عن حجم الإدخال | ممتاز | نوع الكومة |
O(log n) | الفضاء اللوغاريتمي | يزداد استخدام المساحة ببطء مقارنة بزيادة حجم بيانات الإدخال | ممتاز | نوع سريع |
O(n) | الفضاء الخطي | يستخدم استخدام المساحة خطيًا مع حجم الإدخال | جيد | دمج الفرز |
O(n + k) | مساحة مجتمعة/مضافة | يستخدم استخدام المساحة خطيًا مع مجموع n و k | سيء | فرز راديكس |
| شرط | تعريف | أمثلة |
|---|---|---|
| نوع البيانات التجريدية (ADT) | يمثل وصفًا رفيع المستوى لنوع البيانات ، مع التركيز على سلوكه وعملياته بدلاً من تفاصيل التنفيذ المحددة | المكدس ، قائمة الانتظار ، القاموس ، التسلسل ، مجموعة |
| بنية البيانات | تقنية أو استراتيجية لتنفيذ نوع بيانات معين ، وتنظيم وتخزين البيانات بطريقة محددة لتسهيل العمليات الفعالة | صفيف ، قائمة مرتبطة ، جدول التجزئة ، الأشجار (شجرة البحث الثنائية ، كومة ، أشجار حمراء/أسود |
| يكتب | عناصر مكررة | ترتيب العناصر | يجب إضافة/إزالة بترتيب محدد |
|---|---|---|---|
| قائمة | مسموح | عن طريق الفهرس | لا |
| رسم خريطة | مسموح بالقيم | يستخدم Java hashcode () للمفتاح لتحديد الترتيب ، بالنسبة لنا لم يتم فرزه | لا |
| طابور | مسموح | تم الاسترجاع بترتيب محدد | نعم |
| تعيين | محظور | فقط في الأشجار | نعم |
| يكتب | واجهة | فرز؟ | مكالمات hashCode() ؟ | مكالمات compareTo() ؟ |
|---|---|---|---|---|
| ArrayList | قائمة | لا | لا | لا |
| LinkedList | قائمة ، deque | لا | لا | لا |
| arraydeque | قائمة الانتظار ، deque | لا | لا | لا |
| Hashset | تعيين | لا | نعم | لا |
| Treeset | مجموعة ، sortedset | نعم | لا | نعم |
| LinkedHashset | تعيين | لا | نعم | لا |
| هاشماب | رسم خريطة | لا | نعم | لا |
| LinkedHashMap | رسم خريطة | لا | نعم | لا |
| تريماب | خريطة ، sortedMap | نعم | لا | نعم |
لا تسمح هياكل البيانات التي تنطوي على الفرز.