التي خوارزمية الفرز المستخدمة في المحكمة .صافي قاعدة المكتبة الافتراضية البحث ؟
-
12-09-2019 - |
سؤال
أنا الآن أعمل على imprived نسخة من دمج النوع.أنا تنفيذه مع C++ و C#.ثم مقارنة مع المحكمة الخاصة بلبنان نوع الصفيف.النوع() الخوارزمية على التوالي.في C++ لدي متساوية (في بعض الأحيان أفضل) النتيجة.ولكن في C#, اضطررت إلى استخدام تعليمات برمجية غير آمنة باستخدام المؤشرات.هنا الأداء ليس بكثير مقارنة مع الفرز الافتراضي.لذا أريد أن أعرف-
1.أي الخوارزميات المستخدمة في المحكمة .صافي قاعدة الطبقة المكتبة ؟ (أفضل مع الروابط)
2.هل غير آمنة رموز لديه الأداء القضايا ؟
3.أي suggessions بالنسبة لي فيما يتعلق بقياس الأداء من جديد الخوارزمية ؟
المحلول
يستخدم .NET اختلافا من QuickSort (وسط سيدجويك من QuickSort).
ما لم تكن خبيرا في الفرز، فسوف أتفاجأ إذا كان بإمكانك التغلب على الفرز المدمج على مجموعة واسعة من البيانات (بما في ذلك عشوائي، مرتبة بالفعل ومجموعات عكسية). اللجوء إلى رمز غير آمن عادة ما تكون فكرة سيئة ...
نصائح أخرى
المحكمة الخاصة بلبنان النوع قد تعتمد على التنفيذ ، ولكن (كما تقول ويكيبيديا) وعادة ما introsort ، وهو مزيج من فرز سريع و heapsort.يجب أن يكون متوسط تعقيد O(n log n) المقارنات.
يستخدم .NET QuickSort. يمكنك استخدام العاكس لعرض التنفيذ في system.collections.generic.arriaysorthelperper
في معظم الحالات، سيتم تشغيل QuickSort بشكل أسرع من مدمج، على الرغم من أن وقت التنفيذ الأسوأ أطول. كانت هناك بعض التحسينات على QuickSort القياسية كما أعتقد، لكنني لست متأكدا مما إذا تم استخدام أي من هذه الأشياء.
يبدو أنني أتذكر STL باستخدام QuickSort كذلك، لكنني لست متأكدا تماما.