التي خوارزمية الفرز المستخدمة في المحكمة .صافي قاعدة المكتبة الافتراضية البحث ؟

StackOverflow https://stackoverflow.com/questions/961630

سؤال

أنا الآن أعمل على 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 كذلك، لكنني لست متأكدا تماما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top