بهترین ساختار برای عناصر غیر تکراری با تعداد پایین - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

بهترین ساختار برای عناصر غیر تکراری با تعداد پایین

+2 امتیاز
سلام.

کدام یک از container ها برای نگهداری تعداد عناصر زیر 100  تا  غیر تکراری مناسبه؟
سوال شده مهر 25, 1393  بوسیله ی Xavi (امتیاز 627)   24 83 110

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

اولین راه اینه که از hash استفاده کنید و زمان insert چک کنید که آیا وجود داره یا نه .

از اون جایی که جست و جو داخل hash زمان ثابتی می گیره ( (1)O ) پس در مجموع با n تا عملیات این کار قابل انجام هست .

 

از ساختار std::set  هم میشه استفاده کرد( که با red and black tree پیاده سازی شده)

جست و جوی هر عنصر داخل set مرتبش logn هست و چون n بار این کار انجام میشه پس در مجموع مرتبه زمانی میشه nlogn .

 

پس برای n های  بزرگ بهتره از hash استفاده کنید.



ولی برای تعداد پایین set بهتر هست بخاطر این که  hash با استفاده از یک آرایه شامل. یکسری لینک لیست پیاده سازی میشه هم این ریسایز کردن آرایه زمان گیر هست هم استفاده از link list  و هم این که همه ی عناصر برای جست و جو باید hash بشن

ولی داخل set چون به شکل یک درخت ساخته میشه می تونیم صرفا به شکل یک linkedlist حسابش کنیم که هم حافظه کمتری مصرف می کنه و هم برای تعداد پایین مثلا زیر 200 تا سریع تر هم هست .(چون logn مربوط به جست و جو توی عدد های کوچیک عدد کمی میشه  که احتمالا از ثابت C  مربوط به مرتبه زمانی hash کمتر هست .)

پاسخ داده شده مهر 26, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد دی 3, 1393 بوسیله ی Xavi
...