PDA

View Full Version : سریع ترین جست و جو در یک لیست!!!



amin_sltny
جمعه 10 خرداد 1392, 11:58 صبح
سلام من یه برنامه مسنجر تحت شبکه ساختم و روال کاریشم به این صورته که وقتی Client ها به Server متصل میشن یه شی ساخته میشه و به یه لیست اضافه میشه

حالا ما برای ارسال داده وقتی کلاینت داده را ارسال میکنه به دنبال مقصد در این لیست میگردیم و داده را به مقصد ارسال میکنیم

حالا می خوام بدونم چه جست و جویی را به کار ببرم تا این عمل جست و جو را در این الگوریتم سریعترش کنم؟؟؟

ممنون

amin_sltny
جمعه 10 خرداد 1392, 14:34 عصر
کسی نیست کمک کنه؟!!!!!:متفکر::افسرده:

FastCode
جمعه 10 خرداد 1392, 15:01 عصر
radix tree+assisted binary search

ممکنه ساختار لیست رو بگید؟دنبال IP میگردید یا اسم؟چی دارید؟چی میخواهید؟

amin_sltny
جمعه 10 خرداد 1392, 20:34 عصر
radix tree+assisted binary search

ممکنه ساختار لیست رو بگید؟دنبال IP میگردید یا اسم؟چی دارید؟چی میخواهید؟

من دنبال اسم می گردم،

ساختار لیست:
private static List<OBJUser> ListOBJUser;

OBJUser یه کلاسه که اطلاعات Client را نگه میداره مثل نام و می خوام اون کلاس Client را برگردونه

FastCode
جمعه 10 خرداد 1392, 20:55 عصر
اولا که بهتره این لیست رو static تعریف نکیند که راحت بتونید سرورتون رو طوری تغییر بدید که همزمان چند سری کلاینت رو با هم پستیبانی کنه.
و پیشنهادی که من دارم اینه که به جای لیست از SortedDictionary<K, T> استفاده کنید و فیلدی که میخواهید جست و جو بشه رو به عنوان کلید K قرار بدید.
اگر فقط برای تست موجودیت این کار رو میکنید از SortedSet استفاده کنید.
اگر اون فیلد متغیر هست میتونید کار دیگه بکنید.هست؟


مکنه فیلد های اون کلاس و کاری که میخواهید بکنید رو واضح توضیح بدید؟

amin_sltny
شنبه 11 خرداد 1392, 11:47 صبح
اولا که بهتره این لیست رو static تعریف نکیند که راحت بتونید سرورتون رو طوری تغییر بدید که همزمان چند سری کلاینت رو با هم پستیبانی کنه.
و پیشنهادی که من دارم اینه که به جای لیست از SortedDictionary<K, T> استفاده کنید و فیلدی که میخواهید جست و جو بشه رو به عنوان کلید K قرار بدید.
اگر فقط برای تست موجودیت این کار رو میکنید از SortedSet استفاده کنید.
اگر اون فیلد متغیر هست میتونید کار دیگه بکنید.هست؟


مکنه فیلد های اون کلاس و کاری که میخواهید بکنید رو واضح توضیح بدید؟
بله این مقدار ثابته تا زمانی که کلاینت قطع بشه و این کلاس حذف بشه