سؤال

أنا أبحث عن تنفيذ شجرة حمراء سوداء في C #، مع الميزات التالية:

  • البحث، أدخل وحذف في O (سجل n).
  • يجب أن يكون نوع الأعضاء عام.
  • الدعم في مقارنة (ر), ، للفرز T بواسطة حقول مختلفة فيه.
  • يجب أن يكون البحث في الشجرة مع الحقل المحدد، لذلك لن يقبل T, ، ولكن سوف يقبل نوع الحقل فرزه.
  • يجب ألا تكون البحث قيمة دقيقة فقط. يجب أن تدعم البحث في الجزء السفلي / الأعلى.

شكرًا لك.

هل كانت مفيدة؟

المحلول

أنت في الغالب وصفت للتو SortedDictionary<T, U>, ، باستثناء الأدنى التالي / التالي أعلى قيمة للبحث الثنائي القيمة، والتي يمكنك تنفيذها بمفردك دون صعوبة كبيرة.

هل هناك أسباب محددة SortedDictionary غير كافية بالنسبة لك؟

نصائح أخرى

مزق الأصغر من C5 Collection Libs.

هذا هو بالضبط الطلب الأولية في powercollections. من المتطابقة إلى حد كبير ل SurvectedCookary (شجرة سوداء حمراء مع Generics) مع إضافة القدرة على تعيين مفتاح مفتاح بدء التشغيل ومسح جميع القيم في هذا النطاق.

يسمح SortEdDicionary فقط بتكييف وظيفة Getenumerator () التي تبدأ في بداية المجموعة وتسمح فقط باستدعاء Movenext ()، لذا حتى إذا كنت تستخدم LinQ، فلا يوجد شيء يحدث سحر: يبدأ في البداية وتشغيل تعبيرك على كل واحد العقدة، بالترتيب، حتى تجد تلك المطابقة تعبير LinQ الخاص بك.

الطلب لديه وظيفة تحصل على عداد في أو قبل مفتاح معين وهذا هو البحث في O (سجل N).

كلمة تحذيرية على الرغم من: يتم تنفيذ المرض في powercollations ordertictiondicted المستخدم باستخدام "العائد" وأداء الذاكرة وأداء التعداد على الأقل (n ^ 2) ... يمكنك تغيير التنفيذ بنفسك لجعلها تنفذ عدادا تقليديا وكلا من هذه المشاكل يذهب بعيدا. سأرسل هذا التصحيح إلى Codeplex إذا استطعت العثور على الوقت.

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