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

فیلم ساختمان داده جلسه 1

فیلم ساختمان داده جلسه 2

فیلم ساختمان داده جلسه 3

فیلم ساختمان داده جلسه 4

فیلم ساختمان داده جلسه 5

فیلم ساختمان داده جلسه 6

فیلم ساختمان داده جلسه 7

فیلم ساختمان داده جلسه 8

حل تست ساختمان و الگوریتم جلسه 1

حل تست ساختمان و الگوریتم جلسه 2

حل تست ساختمان و الگوریتم جلسه 3

ساختمان داده و طراحی الگوریتم کامپیوتر 1403

ساختمان داده و طراحی الگوریتم آیتی 1403

حل تست ساختمان و الگوریتم جلسه 4

انواع پیمایشهای درخت

نحوه ساخت درخت BST

آموزش درخت B-Tree

بررسی مرتبه ساخت هیپ

آموزش مرتب سازی سریع

آموزش شبکه شار

حل سوالات ساختمان ارشد کامپیوتر 99

حل ساختمان ارشد 95 بخش 1

حل ساختمان ارشد 95 بخش 2
ساختمان داده و طراحی الگوریتم کامپیوتر 1403
ساختمان داده و طراحی الگوریتم آیتی 1403
خرید فیلم های ساختمان داده
در حال حاضر فیلم آموزش ساختمان داده استاد رضوی پرطرفدارترین و پرفروشترین فیلم آموزشی ساختمان داده و الگوریتم کشور است و هر سال بیش از ۶۰۰۰ نفر این فیلم را تهیه میکنند

ویدیو نکته و تست ساختمان داده و طراحی الگوریتم
۱۵٪ تخفیف
خب حالا مجددا به توضیح نمونه سوالات در ساختمان داده ادامه میدهیم
نمونه سوالات مرتبه زمانی درس ساختمان داده
در زیر نمونه سوالات بسیار متنوعی از ساختمان داده را برای شما آورده ایم و سعی کردیم که از همه مباحث ساختمان داده نمونه سوالاتی با پاسخ تشریحی برای شما قرار دهیم، جامعیت و تنوع نمونه سوالات ساختمان داده ای که برای شما قرار دادیم حتما نیاز شما را بر طرف خواهد کرد.
[فرمول]
[فرمول]
[فرمول] [فرمول] [فرمول]
[فرمول]
[فرمول]
[فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول]
با هر بار تکرار حلقه بیرونی (حلقهای که شرط خاتمهاش روی i است)، حلقه داخلی [فرمول] بار اجرا میشود و در هربار اجرا حلقه داخلی؛ i تقسیم بر ۲ میشود و این بدان معناست که i در هر بار اجرا حلقه بیرونی تقسیم بر [فرمول] میشود و این کار تا زمانی ادامه دارد که [فرمول] باشد. بنابراین حلقه خارجی [فرمول] بار اجرا میشود که در هر بار اجرا آن حلقه داخلی [فرمول] بار اجرا میشود، بنابراین تعداد اجزا جمله [فرمول] برابر است با:
(نکته: [فرمول]) [فرمول]
[فرمول]
(ERR، مقدار کرانه خطای محاسبات و یا به عبارتی دقت جواب را بیان میکند.) به دست آوردن مرتبه زمانی شبه کدها
از روی گزینهها میفهمیم که قرار است روی A یک عملیات انجام شود، پس مثلا به ازای 9=A سوال را بررسی میکنیم.
[فرمول]
[فرمول]
[فرمول]
[فرمول]
مشخص است که [فرمول] است و هدف کم کردن اختلاف [فرمول]. پس در واقع [فرمول]؛ داریم:
[فرمول]
[فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول]
[فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول]
Function(int n){
[فرمول] If(n==l) return;[فرمول]O(l)
[فرمول] for(int i=l;i [فرمول] n;i++){[فرمول]O(n)
[فرمول]for(int j=l;j [فرمول] n;j++){[فرمول]O(l)
[فرمول]Printf(''*'');
[فرمول]Break;}}
}
برای الگوریتم B رابطه بازگشتی [فرمول] را داریم که با استفاده از تئوری مستر میزان پیچیدگی برابر با [فرمول] میباشد.
یادآوری: تئوری مستر
[فرمول]
به شرطی که [فرمول] و [فرمول]، اگر مرتبه تابع برابر با [فرمول]، باشد، آن گاه داریم:
[فرمول]
نمونه سوالات رشد توابع درس ساختمان داده
به سادگی باید توابع را با یکدیگر مقایسه کنیم:
یاددآوری) دقت کنید [فرمول] با [فرمول] برابر نیست بلکه [فرمول] و [فرمول]
نکته)
اثبات نکته بالا:
یاددآوری: با توجه به فرمول روبه رو میتوان مبنا را تغییر داد: [فرمول]
[فرمول]
حال با توجه به نکات بالا میفهمیم که [فرمول] حال به مقایسهی این توابع میپردازیم.
[فرمول]
چون هر توان ثابتی از [فرمول] از هر توان ثابتی از [فرمول] رشد بیشتری دارد.
برای تشخیص [فرمول] دو راه داریم (البته مشخص است که دو تابع با توان یکسان داریم و پایههای یکی عدد ثابت و دیگری [فرمول] است پس [فرمول] بزرگتر است):
1- با استفاده از حد نشان دهیم رشد کدام بیشتر است.
[فرمول]
از آنجا که نسبت یک عدد ثبات به [فرمول] صفر خواهد شد میفهمیم که [فرمول] پس داریم:
[فرمول] یا [فرمول]
2- با توجه به اینکه هردو تابع صعودی و بزرگتر از یک هستند از روی رشد [فرمول]هایشان نیز میتوان مشخص نمود:
[فرمول]
پس داریم:
[فرمول] یا [فرمول]
برای تشخیص [فرمول] دو راه داریم (البته مشخص است که دو تابع با پایه یکسان داریم و توان یکی عدد ثابت و دیگری [فرمول] است پس [فرمول] بزرگتر است):
1- با استفاده از حد نشان دهیم رشد کدام بیشتر است.
[فرمول]
از آنجا که نسبت یک برابر با بینهایت شد میفهمیم که [فرمول]
2- با توجه به اینکه هردو تابع صعودی و بزرگتر از یک هستند از روی رشد [فرمول]هایشان نیز میتوان مشخص نمود:
[فرمول]
پس داریم:
[فرمول] یا [فرمول] و در کل میفهمیم که [فرمول]
حال با توجه به توضیحات بالا میفهمیم که گزینه صحیح است.
یاددآوری:
Big O: تابع f(n) از مرتبه O(g(n)) است هرگاه رشد f کمتر مساوی رشد g باشد.
[فرمول]
O بزرگ کران بالا را مشخص میکند.
دقت شود O یک مجموعه است و در نتیجه توابع میتوانند عضو این مجموعه باشند اما به صورت اشتباه رایج از مساوی برای عضویت استفاده میشود.
[فرمول]
big [فرمول] : تابع f(n) از مرتبه [فرمول](g(n)) است هرگاه رشد f بیشتر مساوی رشد g باشد.
[فرمول]
[فرمول] بزرگ کران پایین را مشخص میکند.
دقت شود [فرمول] یک مجموعه است و در نتیجه توابع میتوانند عضو این مجموعه باشند اما به صورت اشتباه رایج از مساوی برای عضویت استفاده میشود.
[فرمول]
با توجه به خواص مجانبی میتوان عبارات زیر را نتیجه گرفت.
[فرمول]
[فرمول]
(خواص لگاریتم) [فرمول]
(توابع چندجملهای از تمامی توابع لگاریتمی با هر توانی رشد سریعتری دارند) [فرمول] [فرمول] (خواص لگاریتم) [فرمول] [فرمول]
[فرمول]
[فرمول]
[فرمول]
چه وقتی ممکن است نقض شود؟
اگر [فرمول] خیلی بزرگ باشد و c خیلی کوچک باشد.
[فرمول]
مثلا فرض کنید [فرمول] برابر ۱۰۰۰ باشد و c برابر ۱ باشد [فرمول]، خب هر چقدر هم که بیشتر شدن مقدار n باعث بشود که [فرمول] رشدش از n lg n بیشتر بشود ولی زورش به ۱۰۰۰ نمیرسد، پس برای این که [فرمول] بزرگتر بشه از [فرمول]، باید n عدد بزرگی باشد. قرار شد [فرمول] باشد، حالا اگر c از [فرمول] بزرگتر باشد که در این صورت [فرمول] خیلی بهتر از [فرمول] است ولی اگر c کوچکتر از [فرمول] باشد، حالا وظیفه n است که با بزرگتر خودش، کوچکی c به [فرمول] را جبران کند.
الف) [فرمول]، زمانی که k و m هر دو ثابت باشند.
ب) [فرمول] ج) [فرمول]
[فرمول]
[فرمول]
در حالت کلی داریم: [فرمول]
نمونه سوالات روابط بازگشتی درس ساختمان داده
[فرمول]
ابتدا باید مرتبه زمانی هر دو برنامه را به دست بیارویم. برای برنامه A داریم:
[فرمول] بار
[فرمول]
[فرمول]
[فرمول]
[فرمول]
[فرمول]
[فرمول]
برای برنامه B داریم، [فرمول] بنابر قضیه مستر مرتبه اجرای این برنامه برابر است با [فرمول]
بنابر مفروضات مسئله داریم [فرمول] حال با استفاده از رابطه [فرمول]
[فرمول]
[فرمول]
ابتدا رابطه اصلی را در n ضرب میکنیم و سپس در رابطه بدست آمده به جای n+1، n قرار میدهیم:
[فرمول] [فرمول]
سپس رابطه [فرمول] را از منفی رابطه [فرمول] میکنیم:
[فرمول]
[فرمول]
حال اگر تابع [فرمول] را به این صورت تعریف کنیم، با توجه به رابطه بازگشتیای که در بالا بدست آوردیم خواهیم داشت:
[فرمول]
[فرمول]
[فرمول]
[فرمول]
[فرمول]
واضح است که گزینه 3 از [فرمول] است و گزینه 1و 4 نیز [فرمول] .
می دانیم که گزینه دوم [فرمول] زیرا اگر به رابطه دقت کنید، در سمت راست تساوی داریم، [فرمول] ، از طرفی به کمک حدس زدن نشان خواهیم داد که:
[فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول]
روش دوم:
[فرمول]
جایگذاری کنید:
[فرمول]
[فرمول]
با استفاده از قضیه مستر میدانیم که:
برای عبارت [فرمول] مرتبه سه حالت داریم:
[فرمول]
[فرمول]
[فرمول]
نکته) اگر در [فرمول]، هر توانی از [فرمول] را کنار میگذاریم و بخش باقیمانده از آن را با سمت چپ مقایسه میکنیم سه حالت رخ میدهد
4- اگر سمت چپ بزرگتر باشد مرتبه برابر سمت چپی میشود
5- اگر سمت راستی بزرگتر باشد، مرتبه برابر با سمت راستی ضرب در [فرمول] (یعنی همون [فرمول]) خواهد بود.
6- اگر برابر باشند مرتبه برابر با [فرمول] ضرب در [فرمول] میشود
حال برای عبارت بالا داریم [فرمول] در نتیجه برای اینکه این شرط برقرار باشد باید به صورت زیر عمل کنیم و هر تابع را امتحان کرده و [فرمول] پیدا کنیم که شرط [فرمول] برقرار میسازد.
[فرمول] [فرمول] [فرمول] [فرمول]
[فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول]
برای این سوال درخت بازگشتی را رسم میکنیم.
جمع
[فرمول]
[فرمول]
[فرمول]
[فرمول]
تصاعد هندسی با جمله اول 1 و قدرت نسبت [فرمول] اگر n خیلی زیاد باشد.
[فرمول]
[فرمول]
[فرمول]
ابتدا باید مرتبه زمانی هر دو برنامه را به دست بیارویم. برای برنامه A داریم:
[فرمول] بار
[فرمول] [فرمول] [فرمول] [فرمول] [فرمول] [فرمول]
برای برنامه B داریم، [فرمول] بنابر قضیه مستر مرتبه اجرای این برنامه برابر است با [فرمول]
بنابر مفروضات مسئله داریم [فرمول] حال با استفاده از رابطه [فرمول]
[فرمول]
int Test (int n, int k)
{
[فرمول] [فرمول] [فرمول] [فرمول] }
نمونه سوالات درختها درس ساختمان داده
Preorder: fgbceda
Postorder: gedcabf
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
[فرمول] | 87 | 48 | 52 | 29 | 23 | 48 | 49 | 21 | 12 | 24 | 17 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
[فرمول] | 80 | 35 | 52 | 30 | 23 | 48 | 49 | 21 | 12 | 1 | 2 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
[فرمول] | 87 | 30 | 52 | 31 | 23 | 48 | 51 | 29 | 12 | 22 | 17 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
[فرمول] | 80 | 31 | 52 | 30 | 23 | 50 | 49 | 21 | 12 | 19 | 47 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
[فرمول] | 80 | 35 | 52 | 30 | 23 | 48 | 49 | 21 | 12 | 1 | 2 |
اعداد ۵ تا ۱۲ را در نظر بگیرید که !۸ جایگشت دارند. اگر عدد ۵ یا ۱۲ زودتر از 4 تا 11 وارد شوند حتماً 5 در ۱۲ با هم مقایسه میشوند. تعداد حالاتی که 5 زودتر وارد شود !7 و تعداد حالاتی که ۱۲ زودتر وارد شود نیز !7 است پس:
[فرمول]
درج هر عنصر در ساختمان داده Red-Black Tree یا منجر به تغییر رنگ میشود و یا حداکثر ۲ دوران انجام میشود.
20 ,26 ,22 ,24 ,23 ,10 ,15 ,6 ,5 :PostOrder
با توجه به این که پیمایش inorder یک درخت BST صعودی است با داشتن دو پیمایش inorder و preorder درخت قابل ترسیم است.
20 ,26 ,22 ,24 ,23 ,10 ,15 ,6 ,5: Post
26 ,24 ,23 ,22 ,20 ,15 ,10 ,6 ,5: In
با توجه به مفروضات مسئله ریشه در عمق صفر قرار دارد. همان طور که در شکل زیر نشان داده شده است بیش ترین عمق درخت برابر با ۹ میباشد.
در یک درخت باینری کامل هر سطح شامل 2i گره میباشد (همچنین هر گره در سطح i دارای عمق i و ارتفاع h-i میباشد) حال میخواهیم مجموعه تمامی ارتفاعها را حساب کنیم.
[فرمول]
حال طرفین را در 2 ضرب میکنیم
[فرمول]
حال S را از رابطهی 2S-S بدست میآوریم
[فرمول]
با توجه به این که مجموع تمامی گرهها در یک درخت کامل برابر n است داریم [فرمول] بنابراین داریم [فرمول] در نهایت با جایگذاری داریم
[فرمول]
الف) حداکثر تعداد گرههای یک درخت دودویی با L برگ
ب) حداقل و پ) حداکثر تعداد گرههای یک درخت دودویی محض با ارتفاع h (درختی که هر گره آن یا فرزند ندارد یا دو فرزند دارد.) درختها
ب) حداقل تعداد گرههای یک درخت دودویی محض با ارتفاع h زمانی رخ میدهد که درخت شبیه یک مسیر باشد که از هر گرهی آن یک فرزند اضافه نیز خارج شده باشد. در این صورت تعداد گرههای هر سطح ۲ است که به علاوه گرهی ریشه تعداد کل گرهها برابر ۱+ h2 خواهد بود.
پ) حداقل تعداد گرههای یک درخت دودویی محض با ارتفاع h زمانی رخ میدهد که درخت پر باشد که یک درخت پر با ارتفاع h دارای [فرمول] گره میباشد.
نمونه سوالات مرتب سازی درس ساختمان داده
راه حل 1 عدد گذاری)
با توجه به اینکه گزینه ها رابطه دقیقی از n داده اند کافیست برای n=2 چک کنیم و گزینه صحیح را پیدا کنیم:
برای n=2 و یک مجموعه دو عضوی، بیشترین تعداد زوج معکوس به صورت A=[max min] خواهد بود (جای max و min عدد هم میتوانید بذارید مثلا A = [25 14]) در نتیجه بیشترین تعداد زوج معکوسی برابر با 1 است و فقط گزینه 1 صحیح است.
راه حل 2 اثبات)
به توضیحات زیر توجه کنید:
وارونگی نسبت به صعودی بودن:
وقتی یک آرایه داریم و برای دو عنصر A[i] , A[j] با جایگاه (اندیس) به ترتیب i, j شرط زیر برقرار است میگوییم که یک وارونگی (زوج- معکوس بر اساس این تست یا inversion) داریم.
[فرمول]
برای پیدا کردن وارونگی ها از سمت چپ به راست، حرکت میکنیم تمامی عناصری که از یک عنصر کوچکتر هستند با آن عنصر وارونه هستند.
مثال) آرایه زیر چند وارونگی دارد:
[فرمول]
وارونگی ها:
[فرمول]
در کل 7 وارونگی داریم.
نکته) آرایه صعودی وارونگی ندارد.
نکته) آرایه نزولی max تعداد وارونگی دارد.
راه اثبات 1)
چون هر عنصر با تمامی عناصر بعدش وارونگی دارد پس تعداد وارونگی آرایه نزولی برابر است با
[فرمول]
دقت کنید تعداد وارونگی ها را دوبار نشمارید برای مثال عنصر آخر با تمامی عناصر قبل از خودش وارونگی دارد اما چون در محاسبه [فرمول] قبلی این وارونگی ها به حساب آورده ایم نباید [فرمول] وارونگی هم برای عنصر آخر جمع کنیم.
راه اثبات 2)
هر دو عنصری که انتخاب کنیم چون آرایه نزولی است قطعا شرط j > i but A[i] > A[j] برقرار است پس تعداد وراونگی برابر تعداد انتخاب بدون ترتیب دو عنصر از n عنصر است.
[فرمول]
موارد گفته شده را در آرایه نزولی زیر میتوانید امتحان کنید.
[فرمول]
نکته) متوسط تعداد وارونگی ها در یک آرایه برابر با [فرمول] است.
اثبات:
روش 1:
فرض کنید L یک لیست دلخواه از عناصر است و [فرمول] لیستی با عناصر L است که به صورت برعکس چیده شده است برای مثال:
[فرمول]
حالا دو عضو از لیست L انتخاب میکنیم، برای این کار [فرمول] حالت وجود دارد. دو عضوی که انتخاب کردیم در حداقل یکی از لیست های [فرمول] یا [فرمول] با یکدیگر وارونگی دارند. بنابراین میتوان نتیجه گرفت در دو لیست [فرمول] و [فرمول] در مجموع [فرمول] وارونگی وجود دارد.
حال برای اعضای هر لیستی [فرمول] جایگشت وجود دارد که این تعداد جایگشت را به دو مجموعه ی مجزا که یکی شامل [فرمول] ها و دیگری شامل [فرمول] ها است تقسیم میکنیم (به عبارت دیگر نصفی از جایشگت ها برعکس شده ی نصفه ی دیگر هستند). در نتیجه میتوان فهمید که میانگین وارونگی ها در کل جایشگت های برابر است با [فرمول].
روش 2 (استقرا):
در استقرا ابتدا برای تعدادی عدد کوچک درستی قضیه [فرمول] را چک میکردیم و سپس قضیه را برای [فرمول] درست فرض میکردیم و برای [فرمول] درستی آن را اثبات میکردیم. برای قضیه "تعداد میانگین وارونگی برابر است با [فرمول]" ابتدا برای آرایه ای با n=1 آن را چک میکنیم سپس برای P(K) ان را اثبات میکنیم. (اثبات کامل را در این لینک میتوانید مطالعه کنید)
نکته) زمان اجرا الگوریتم مرتب سازی درجی مستقیماً به تعداد وارونگی ها بستگی دارد و اگر آرایه وارونگی داشته باشد زمان اجرای مرتب سازی درجی برابر [فرمول] است.
نکته) با مرتب سازی درجی و ادغامی میتوان تعداد وارونگی ها شمرد.
نحوه شمردن مرتب سازی درجی:
در الگوریتم مرتب سازی درجی یک شمارنده اضافه میکنیم. هر جابهجایی که انجام شد یکی به شمارنده اضافه میکنیم به معنی اینکه هر این جابهجایی به دلیل یک وارونگی بوده که به وسیله الگوریتم حل شده.
یاددآوری:
در مرتب سازی درجی هربار از عنصر دوم شروع میکنیم هر عنصر را در انتهای آرایه درج میکنیم با عناصر قبلی مقایسه میکنیم اگر جایشان درست نبود باید جابهجایی انجام میدادیم برای مثال:
[فرمول]
ابتدا 4 را درج میکنیم پس جایش باید با 12 تغییر کند. [فرمول]
سپس 9 را درج میکنیم و دوباره 9 جایش را با 12 تغییر میدهد. [فرمول]
7 را درج میکنیم به ترتیب جایش با 12 و 9 تغییر میدهد. [فرمول]
5 را درج میکنیم جایش را با 12، 9 و 7 تغییر میدهد. [فرمول]
در مجموع 7 جابهجایی و در نتیجه 7 وارونگی داشتیم.
نحو شمردن مرتب سازی ادغامی:
در این الگوریتم نیز یک کانتر میگذاریم. و هر وقت کسی از لیست [فرمول] انتخاب شد کانتر را با تعداد تمامی عناصر موجود در لیست [فرمول] جمع میزنیم و این کار را در تمامی مراحل مرتب سازی ادغامی انجام میدهیم. ( از مقایسه آرایه های کوچک شده و تک عنصری تا آخرین مرحله.)
بنابر صورت سوال به رابطه بازگشتی زیر میرسیم.
[فرمول]
که با استفاده از تئوری مستر و یا درخت مرتبه اجرا برابر با [فرمول] میشود.
[فرمول]
P) انتخابی Q) مرتبسازی درجی R) جستوجوی دودویی S) جستوجوی ادغامی
مرتبه اجرا در بهترین حالت برای مرتبسازی انتخابی برابر با [فرمول] ادغامی برابر [فرمول]، مرتبسازی درجی برابر [فرمول] و جستوجوی دودویی برابر [فرمول]میباشد.
مرتب بودن دو طرف عنصر P[i] استفاده از ایده جستوجوی دودویی را فراهم میکند. در واقع میتوانیم مشابه الگوریتم جستوجوی دودویی عمل کنیم ولی جهت جستوجو را سه عنصر وسط آرایه تعیین میکنند. با مقایسه عنصر وسط آرایه با عناصر قبل و بعدش، یکی از سه حالت زیر رخ خواهد داد:
- حالت اول: [فرمول] در این حالت باید جستوجو را در نیمه اول آرایه [فرمول] ادامه دهیم.
- حالت دوم: [فرمول] در این حالت باید جستوجو را در نیمه دوم آرایه [فرمول] ادامه دهیم.
- حالت اول: [فرمول]
در این حالت اندیس مورد جستوجو پیدا شده است و پاسخ مسئله میباشد.
بنابراین در هر فاز الگوریتم، یا پاسخ مسئله را به دست میآوریم و یا باید در یکی از نیمههای آرایه به جستوجو را ادامه دهیم. پس اگر T(n) تابع پیچیدگی زمانی این الگوریتم باشد، رابطه بازگشتی آن به صورت زیر خواهد بود:
[فرمول]
که مرتبه زمانی این رابطه بازگشتی O(lgn) میباشد، یعنی در بدترین حالت مرتبه الگوریتم [فرمول] است.
برای به دست آوردن کران پایین این مسئله، محاسبات را از دید درخت تصمیمگیری این مسئله نگاه میکنیم. هر گرهی داخلی این درخت از یک جفت کوزه (یک قرمز و یک سبز) که مقایسه میکنیم تشکیل شده است و دارای سه یال خروجی دارد. (کوزهی قرمز ظرفیت کمتر، ظرفیت برابر و یا ظرفیت بیشتر نسبت به کوزهی سبز). برگهای این درخت، گروهبندیهای یکتای کوزهها را نشان میدهد. ارتفاع درخت تصمیم این مسئله برابر تعداد مقایسههای الگوریتم در بدترین است. تعداد برگهای این درخت برابر !n میباشد چون هر جایگشت از کوزههای قرمز به همراه کوزهی سبز متناظرش یک نتیجه متفاوت را حاصل میکند. هر شاخه درخت از درجه ۳ میباشد و بنابراین این درخت حداکثر [فرمول] برگ خواهد داشت. بنابراین خواهیم داشت:
[فرمول]
نمونه سوالات جداول درهم ساز درس ساختمان داده
9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
33 | 46 | 52 | 34 | 23 | 42 |
چه تعداد از دنبالههای متفاوت درج کلیدها در این جدول وجود دارد که جدول بالا را نتیجه میدهد؟
جداول درهم سازنمونه سوالات آرایه، جستجو در آرایه، لیست پیوندی، پشته، صف درس ساختمان داده

struct node
{
int value;
struct node * next;
};
void rearrange(struct node * list)
{
struct node * p, * q;
int temp;
if ((!list) || !list -> next)
return;
p=list; q=list-> next;
while(q)
{
temp = p-> value;
p-> value= q-> value;
q-> value= temp;
q=-> next;
p=p ? q-> next:. ;
}
}
ABCDEFGH
برای گزینه ۱ ابتدا B و A را داخل پشته قرار میدهیم و بلافاصله میخوانیم، چون مقدار pop صفر است دو عنصر بالای پشته فراخوانی میشود سپس D و C را داخل پشته قرار میدهیم و دوباره pop میکنیم، چون مقدار pop فرد است فقط مقدار D بر میگردد و دوباره عمل push برای F و E انجام و بلافاصله pop که دو عنصر بالا را بر میگرداند و سپس مجددا pop که فقط یک عنصر بر میگرداند و در نهایت H و push ،G میشود و دوباره pop میشود و گزینه ۱ در نهایت تولید میشود.
برای مورد ۲ داریم:
برای مورد 4 داریم:
فقط برای گزینه 3 نمیتوان رسم کرد چون DC با هم آمده که امکانپذیر بنابر مسئله نمیباشد.
نمونه سوالات ساختمان داده این صفحه از چه منابعی است؟
در این صفحه از نمونه سوالات ساختمان داده کرمن، نمونه سوالات امتحانی ساختمان داده دانشگاه تهران، نمونه سوالات ساختمان داده دانشگاه شریف، نمونه سوالات استخدامی درس ساختمان داده، نمونه سوالات ساختمان داده با جواب دانشگاه ازاد و همین طور سوالات ساختمان داده کنکور ارشد و دکتری رشته های مختلف از جمله کامپیوتر و آی تی و علوم کامپیوتر استفاده شده است.
آیا نمونه سوالات ساختمان داده این صفحه جواب دارد و به درد چه کسانی میخورد؟
بله. تمامی سوالات ساختمان داده این صفحه با پاسخ های کاملا تشریحی در اختیار شما قرار گرفته است. سوالات این صفحه به درد دانشجویان مقطع لیسانس رشته های مختلف، داوطلبان کنکورهای مقاطع مختلف از جمله ارشد و دکتری، داوطلبان آزمون های استخدامی و افرادی است که به دنبال حل مسائل بیشتر برای مسلط شدن روی ساختمان داده هستند
همچنین هر گونه سوالی در مورد کلاسهای آنلاین کنکور کامپیوتر و یا تهیه فیلمها و یا رزرو مشاوره تک جلسهای تلفنی با استاد رضوی دارید میتوانید به طرق زیر از تیم پشتیبانی بپرسید:
آی دی تلگرام تیم پشتیبانی: konkurcomputer_admin@
تماس با پشتیبانی: 09378555200