PDA

View Full Version : سوال: مشکل با آرایه های خیلی بزرگ



masanar
شنبه 18 مهر 1388, 18:26 عصر
سلام
من یه آرایه دارم که با این آرایه یه درخت Bst ایجاد می کنم و اون درخت رو تو یه آرایه دیگه ذخیره می کنم . واسه اینکه یه Bst رو تو یه آرایه ذخیره کنیم مثلا اگه پدر تو خونه i قرار داره باید فرزند چپش توخونه 2*i و فرزند راستش تو خونه
i*2+1 باشه و از اونجا که این درخت موازنه شده نیست طول آرایه دوم خیلی بیشتر از طول آرایه اول میشه و چون اندیس آرایه فقط می تونه عدد باشه اگه آرایه اولم تعداد عناصرش زیاد باشه ممکنه در ساخت آرایه درخت مشکل ایجاد بشه مثلا وقتی آرایه اولم 800 تا عنصر داشته باشه ارور 'System.OutOfMemoryException' ایجاد میشه :گریه:
البته این ارور طبیعیه چون در بدترین حالت با این 800 تا عنصر ما یه درخت خواهیم داشت که 800 سطح داره و در هر سطحی فقط یه عنصر غیر null یعنی یه درخت که باید 2 به توان 800 منهای یک گره رو براش ذخیره کرد که فقط 800 تا از اونها null نیستن(که این مقدار از محدوده اعداد صحیح خیلی بیشتر میشه) :کف:
حالا سوال من اینه که چطور می تونم با حفظ این ساختار یه درخت خیلی بزرگ رو ذخیره کنم ؟؟؟ :متفکر:

keivan mousavi
شنبه 18 مهر 1388, 20:32 عصر
دوست عزيز فكر كنم متد params جواب كارتو بده

masanar
شنبه 18 مهر 1388, 22:27 عصر
ممنون از جوابتون
اما من خیلی سی شارپ بلد نیستم
میشه خواهش کنم بیشتر توضیح بدین
یعنی باید چی کار کنم ؟؟؟

keivan mousavi
یک شنبه 19 مهر 1388, 01:00 صبح
public void sale(params int a)
{
//تعريف نوع آرايه
}

masanar
یک شنبه 19 مهر 1388, 08:29 صبح
فکر کنم گیراییم ضعیف شده :گیج:
ببینید من یه کلاس دارم که آرایه اول و آرایه درختم باید به صورت فیلد های عمومی داخلش تعریف بشه تو این کلاس یه متد Bst هم هست که از آرایه اول استفاده میکنه درخت رو ایجاد میکنه و تو آرایه دوم می ریزه(که مشکل من با آرایه دومه) چون بقیه متد های این کلاس هم از این دوتا آرایه استفاده می کنن فکر کنم تعریفشون به اون شکلی که شما گفتین مشکل ساز بشه !؟
اصلا میشه توضیح بدین این کلمه چی کار می کنه ؟؟؟ آخه تو کتابی که من دارم چیزای خوبی واسه params نگفته!!!

keivan mousavi
یک شنبه 19 مهر 1388, 13:03 عصر
اصلا میشه توضیح بدین این کلمه چی کار می کنه ؟؟؟ آخه تو کتابی که من دارم چیزای خوبی واسه params نگفته!!!

دقيقاً توي هيچ كتابي در اين باره بحث نشده من توي يكي از DVD هاي آموزشي قديمي اين مطلبو ديدم فقط ميدونم اين كار به شما كمك ميكنه يك كلاس براي آرابه تون تعريف كنيد و اگر آرايه شما خيلي بزرگ بود در اونجا مديريت استثنا كنيد

من فكر كنم اگه آرايه رو به صورت عدد بگيريد و به صورت طول رشته اي ذخيرع كنيد مشكلتون حل بشه

masanar
یک شنبه 19 مهر 1388, 19:50 عصر
مشکل اینجاست که عناصر هر دو آرایه من عناصر ساده مثل عدد یا رشته نیستن و نمی تونم تبدیلشون کنم هر کدومشون یه استراکت هستن که فیلد های این استراکت ها هم باز ساده نیستن... یعنی یه ساختار تا حدودی پیچیده
در هر صورت از راهنمایی هاتون ممنون :لبخندساده: