سورس کد الگوریتم مرتب سازی سریع ++c
سلام خسته نباشید بنده کد الگوریتم سریع مرتب سازی با زبان ++c رو میخاستم ممنون میشم برام بزارید؟
1 پاسخ
درود .. قرار دادن کد در سایت فکر کنم ممنوع باشه.
منم به الگوریتم اکتفا میکنم.
مرتبسازی حبابی (به انگلیسی: Bubble sort) یک الگوریتم مرتبسازی سادهاست که لیست را پشت سرهم پیمایش میکند تا هر بار عناصر کنارهم را با هم سنجیده و اگر در جای نادرست بودند جابهجایشان کند. دراین الگوریتم این کار باید تا زمانی که هیچ جابهجایی در لیست رخ ندهد، ادامه یابد و در آن زمان لیست مرتب شدهاست. این مرتبسازی از آن رو حبابی نامیده میشود که هر عنصر با عنصر کناری خود سنجیدهشده و درصورتی که از آن کوچکتر باشد جای خود را به آن میدهد و این کار همچنان پیش میرود تا کوچکترین عنصر به پایین لیست برسد و دیگران نیز به ترتیب در جای خود قرار گیرند (یا به رتبهای بالاتر روند یا به پایینتر لیست رانده شوند) این عمل همانند پویش حباب به بالای مایع است.
این مرتبسازی از آن رو که برای کار با عناصر آنها را با یکدیگر میسنجد، یک مرتبسازی بر مبنای مقایسهاست.
با فرض داشتن n عضو در لیست، در بدترین حالت n (n - 1) / 2 عمل لازم خواهد بود.
مرتب سازی انتخابی ، معمولاً اطلاعات و دادههای خامی که در اختیار برنامه نویس قرار دارد بصورت نامرتب هستند. مواقعی پیش میآید که لازم است این دادهها بر حسب فیلد خاصی مرتب بشوند؛ مانند لیست دانش آموزان بر حسب معدل، لیست کارمندان بر حسب شماره پرسنلی، لیست دفترچه تلفن بر حسب نام خانوادگی و... روشهای متعددی برای مرتبسازی وجود دارد. برای شروع روش مرتبسازی انتخابی (Selection Sort):
روش انتخابی اولین روشی است که به ذهن میرسد: بزرگترین رکورد بین رکوردهای لیست را پیدا میکنیم و به انتهای لیست انتقال میدهیم. از بقیه رکوردها بزرگترین را انتخاب میکنیم و انتهای لیست - کنار رکورد قبلی - قرار میدهیم و...
مرتب سازی درجی ، در مرتبسازی درجی، ابتدا عنصر دوم با عنصر اول لیست مقایسه میشود و در صورت لزوم با عنصر اول جابجا میشود به طوری که عناصر اول و دوم تشکیل یک لیست مرتب دوتایی را بدهند. سپس عنصر سوم به ترتیب با دو عنصر قبلی خود یعنی عناصر دوم و اول مقایسه و درجای مناسبی قرار میگیرد به طوری که عناصر اول و دوم و سوم تشکیل یک لیست مرتب سه تایی را بدهند. سپس عنصر چهارم به ترتیب با سه عنصر قبلی خود یعنی عنصرسوم و دوم و اول مقایسه و درجای مناسب قرار میگیرد به طوری که عناصر اول و دوم و سوم و چهارم تشکیل یک لسیت مرتب چهارتایی را بدهند و در حالت کلی عنصر امم با ام منهای یک عنصر قبلی خود مقایسه میگردد تا در مکان مناسب قرار گیرد به طوری کهام عنصر تشکیل یک لیست مرتب ام تایی را بدهند و این روند تا مرتب شدن کامل لیست ادامه مییابد. یا به صورت دقیق تر
- مرحله 1:[1]A خودش به طور بدیهی مرتب است.
- مرحله 2:[2]A را یا قبل از یا بعد از [1]A درج میکنیم طوری که [1]A و [2]A مرتب شوند.
- مرحله 3:[3]A را در مکان صحیح در [1]A و [2]A درج میکنیم به گونهای که [1]Aو [2]A و[3]A مرتب شده باشند.
- مرحله A[n]:n را در مکان صحیح خود در [1]Aو [2]A و... و[A[n-1 به گونهای درج میکنیم که کل آرایه مرتب باشد.
- زمان اجرای الگوریتم مرتبسازی درجی از(O(n^2 است.
- این الگوریتم از الگوریتمهای پایدار میباشد و در یک آرایهٔ کاملاً مرتب بهترین حالت را دارد و برای یک آرایهٔ مرتب شده معکوس بدترین حالت را دارد.
- ثابت شدهاست که برای امهای کوچکتر از بیست مرتبسازی درجی سریع ترین روش مرتبسازی است.
- پیادهسازی (مرتبسازی درجی) در ++C
و اما :
مرتب سازی سریع :
مرتبسازی سریع (Quick Sort) از جمله روشهای محبوب و با سرعت بالا برای مرتب کردن دادهها محسوب میشود. این روش هم مثل روش ادغام از تقسیم و حل (Divide and Conqure) برای مرتب کردن دادهها استفاده میکند. به این ترتیب که دادهها رو به دو قسمت مجزا تقسیم، و با مرتب کردن آنها کل دادهها را مرتب میکند. برای این کار یکی از دادهها (مثلاً داده اول) به عنوان محور انتخاب میشود. دادهها بر اساس محور طوری چینش میشوند که همه دادههای کوچکتر از محور در سمت چپ و کلیه دادههای بزرگتر یا مساوی محور، در سمت محور قرار میگیرند. با مرتب کردن دو قسمت به دست آمده کل دادهها مرتب میشوند. در این حالت، مثل روش ادغام نیازی به ادغام کردن دادهها نیست. چرا که قسمت سمت راست همگی از قسمت سمت چپ کوچکتر هستند و بالعکس.
لینک زیر کمک زیادی به شما میکنه ( منبع )