PDA

View Full Version : سوال: سوال در مورد پیاده سازی الگوریتم Insertion در آرایه به زبان C



TheSeeker
پنج شنبه 13 خرداد 1395, 18:36 عصر
سلام
روز همگی بخیر،
به این برنامه توجه کنید:
http://codepad.org/frlS4Yau
{ چند بار کد رو گذاشتم و هر بار CSS قاطی شد، نتیجتا گذاشتم اینجا }

این برنامه میاد و عدد 10 رو در محل 3 (ایندکس 4) آرایه قرار میده، در نتیجه انتظار میره آرایه از 1 - 3 - 5 - 7 - 8 به شکل 1 - 3 - 5 - 10 - 7 -8 تغییر کنه.
چیزی که واقعا پیش میاد این هست:
1 - 3 - 5 - 10 - 7 - 32766
مشخص هست که عدد 8 از دست رفته.
حالا سوال اینجاست که چرا این اتفاق نمیوفته؟ و این عدد 32766 از کجا اومده دیگه!؟!
ضمنا من از Code Blocks 13 روی Ubuntu با GCC 4.8.4 استفاده میکنم.
با تشکر.

amirtork
شنبه 15 خرداد 1395, 01:46 صبح
سلام،
علت این امر این هست که آرایه ای که شما تعریف کردید، در کل 5 خانه از حافظه ی شما رو رزرو کرده، اما شما بعد از insert کردن عدد 10، در واقع قصد دارید که از 6 خانه ی حافظه استفاده کنید که خانه ی شش ام در اختیار شما نیست، بنابراین جایی که عدد 8 باید قرار بگیره مقدار نا مشخصی که معمولا به اون زباله میگن قرار داره. برای اینکه اینکار به درستی انجام بگیره، آرایه به طول 6 ایجان کنید، که خانه ی آخر اون(ایندکس 5) رو بدون مقدار دهی رها کنید تا در فرآیند insert مورد استفاده قرار بگیره.