PDA

View Full Version : سورت آرایه توسط دو thread ؟؟؟



sfm_designer
سه شنبه 06 اردیبهشت 1384, 16:34 عصر
سلام
چگونه یک آرایه را بعد از تقسیم به دو قسمت توسط دو ترد(همزمان) مرتب کنیم بعد ترکیب کرده و باز در صورت لزوم باز مرتب کنیم.؟؟

یاشار
سه شنبه 06 اردیبهشت 1384, 19:17 عصر
اگر به طور کلی بخواهیم بحث کنیم که این کار نغض غرضه. چون هر بار که عضوی جابجا میشه باید Thread ها رو با هم synchronize کنیم که در این صورت اگر سرعت کل کمتر نشه، مصلما بیشتر نمیشه.

ولی در حالت خاص، مثلا اگر بخواهیم یه سری String رو طبق حروف الفبا مرتب کنیم، میتونیم اول چند تا آرایه بسازیم که تو هر کدوم فقط کلمات با حرف اول خاص باشند (پیدا کردن کلمات بر اساس حرف اول خیلی سریع‌تر از مرتب کردنشون بر اساس تمام حروفشونه) بعد هر کدوم رو بفرستیم تو یه Thread مجزا که مرتب بشن، بعد که همه کارشون تموم شد، پشت سر هم بر اساس حروف الفبا بچینیم.

در مورد کلمه‌ها چیز دیگه‌ای به ذهن من نمی‌رسه. ولی اگه بگید چی باید بر چه اساسی مرتب بشه شاید راه بهتری وجود داشته باشه.

sfm_designer
چهارشنبه 07 اردیبهشت 1384, 11:55 صبح
سلام
ممنون از جوابتون این یک تکه کده که باید بنویسم و مرتب کردن اعداد است اگه کمی در مورد روش سورت هم توضیح بدین ممنون می شم.
:موفق:

یاشار
چهارشنبه 07 اردیبهشت 1384, 16:36 عصر
سریعترین روش مرتب کردن اعداد که من ازش اطلاع دارم QuickSort است که میتونید نمونه‌هاش رو تو اینترنت پیدا کنید. روش‌های دیگه که هر کدوم مورد استفاده خودشون رو دارن :



# Bubble sort
# Counting sort
# Heap sort
# Insertion sort
# Merge sort
# Selection sort
# Shell sort

تقریبا برای هر استفاده خاص می‌شه یه روش به کار برد (ابداع کرد) که سرعت کار رو افزایش می‌ده. ولی همیشه کلاس SortedList هست که برای تعداد کم جواب میده. تعداد زیاد هم معمولا از دیتابیس گرفته می‌شن که در اون صورت سورت مادرزاد هستند. برای همین تا به حال برای من پیش نیومده که Sort Class خودم رو بنویسم. اگر مشکلتون تبدیل الگوریتم به این "تکه" کد هست، یه پست بذارین امشب اگه بیکار بودم مینویسم میذارم اینجا.