ساختمان داده
شاید متداول ترین ساختمان داده ای که دانشجویان ورودی در برنامه هایشان بکار می گیرند بدون آنکه با نام "ساختمان داده" به آن اشاره کنند، آرایه است. آرایه یک ساختمان دادهء رایج است که در اکثر زبان های برنامه سازی به صورت یک مفهوم پیش فرض تعریف شده است. عملگر دسترسی در این ساختمان داده بسیار سریع است. برای نمونه فرض کنید که متغییر arr یک آرایه از نوع int و با طول 100 باشد. در این صورت دسترسی به خانه پنجم این آرایه با دستور زیر انجام می پذیرد.

int x = arr[5];

حال فرض کنید که می خواهیم بدانیم که آیا عنصری مانند 17 در این آرایه وجود دارد یا نه؟ برای پاسخ به این سوال یک حلقه نیاز داریم تا بوسیله آن از ابتدای آرایه تا انتهای آن را بررسی کنیم. پس اگر جستجو در آرایه را یک عملگر حساب کنیم یا حداقل یک تابع برای جستجو بنویسم می توانیم ادعا کنیم که در آرایه جستجو از دسترسی کندتر است.
چند سوال در مورد توضیحات فوق:
1) در جملات فوق چگونه ترم های "سریع" و "کند" را به صورت دقیقتری (فرمال تر، ریاضی تر) بیان کنیم؟
2) آیا ساختار های دیگری می توان تعریف کرد که جستجو را بهتر انجام دهند؟
چند سوال متداول دیگر:
3) در درس مبانی با مفهوم مرتب سازی حبابی آشنا شده ایم. سرعت این پروسه در آرایه چگونه است؟
4) همکلاسی من روش دیگری برای مرتب سازی یاد گرفته بود که الگوریتم متفاوتی بود. الگوریتم او روی لپ تاب شخصی خودش در 4 ثانیه یک آرایه 2000 عنصری را  مرتب می کرد در حالی که الگوریتم معمولی که روی لپ تاب من بود در 5 ثانیه این کار را انجام می داد؟ اگر می گویید  الگوریتم او بهتر بود من اعتراض دارم چون لپ تاپ من قدیمی بوده و سرعت کمی دارد. آیا روش های دقیقتری برای مقایسه وجود دارد؟
5) در درس مبانی برنامه سازی با لیست پیوندی آشنا شدیم. در مقایسه با آرایه اضافه کردن داده در لیست پیوندی بدون محدودیت قابل انجام است با این حال چرا از آرایه استفاده می کنیم؟
6) در مقایسه با لیست پیوندی دسترسی به محلی خاص از آرایه با یک عمل قابل انجام است با این حال چرا از لیست پیوندی استفاده می کنیم؟
7) پروژه گراف درس ریاضیات گسسته من برای گرافهایی با بیش از 10000 نود اکسپشن حافظه داد، آیا راه حلی برای این مورد وجود دارد؟

محتواهای مرتبط
نوشته شده
ویرایش شده
نام :  
نام خانوادگی :  
ایمیل فرستنده :
refresh captcha
 
نظر خود را درباره این مطلب بیان بفرمائید