mahdigh88
15-03-2013, 16:28
هدف از این سؤال مرتب کردن یک آرایه با روش مرتب سازي سریع است. فرض کنید آرایه ورودي به صورت زیر باشد:
1, 33, 87, 21, 65, 99, 4, 12
ابتدا یکی از اعداد آرایه به صورت تصادفی به عنوان محور انتخاب می گردد. مثلاً 21
1, 33, 87, 21, 65, 99, 4, 12
سپس، اعداد کوچکتر از محور در سمت چپ و اعداد بزرگتر از محور در سمت راست محور قرار می گیرند:
1, 4, 12, 21, 33, 87, 65, 99
حالا دو آرایه براي مرتب سازي موجود است:
1, 4, 1233, 87, 65, 99
دوباره همین کار براي آرایه هاي جدید انجام می گیرد.برنامه ي بازگشتی بنویسید که در سطر اول طول آرایه و در سطر بعدي عناصر آرایه را به عنوان ورودي بگیرد و در سطربعد آرایه مرتب شده را چاپ نماید و اگر طول آرایه 0 وارد شد برنامه تمام شود.مرتب سازي باید به صورت درجا انجام شود، یعنی استفاده از آرایه ي دیگري، غیر از آرایه مورد نیاز براي ورودي، جهتمرتب سازي مجاز نیست .
1, 33, 87, 21, 65, 99, 4, 12
ابتدا یکی از اعداد آرایه به صورت تصادفی به عنوان محور انتخاب می گردد. مثلاً 21
1, 33, 87, 21, 65, 99, 4, 12
سپس، اعداد کوچکتر از محور در سمت چپ و اعداد بزرگتر از محور در سمت راست محور قرار می گیرند:
1, 4, 12, 21, 33, 87, 65, 99
حالا دو آرایه براي مرتب سازي موجود است:
1, 4, 1233, 87, 65, 99
دوباره همین کار براي آرایه هاي جدید انجام می گیرد.برنامه ي بازگشتی بنویسید که در سطر اول طول آرایه و در سطر بعدي عناصر آرایه را به عنوان ورودي بگیرد و در سطربعد آرایه مرتب شده را چاپ نماید و اگر طول آرایه 0 وارد شد برنامه تمام شود.مرتب سازي باید به صورت درجا انجام شود، یعنی استفاده از آرایه ي دیگري، غیر از آرایه مورد نیاز براي ورودي، جهتمرتب سازي مجاز نیست .