دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

مشاهده این پیام به این معنی است که شما در سایت عضو نیستید، لطفا در صورت تمایل جهت عضویت در سایت علمی نخبگان جوان اینجا کلیک کنید.

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
نمایش نتایج: از شماره 1 تا 7 , از مجموع 7

موضوع: الگوریتم مرتب سازی ادغامی Merge Sort به روش تقسیم و حل+سورس کددر c#

  1. #1
    کـــــــاربر فــــعال
    رشته تحصیلی
    کامپیوتر(مهندسی نرم افزار)
    نوشته ها
    18,304
    ارسال تشکر
    4,182
    دریافت تشکر: 19,008
    قدرت امتیاز دهی
    220
    Array

    پیش فرض الگوریتم مرتب سازی ادغامی Merge Sort به روش تقسیم و حل+سورس کددر c#

    روش تقسیم و حل یکی از مباحث مهم طراحی الگوریتم است که در آن مسائل را می شکنیم و به قسمت های کوچک تر تقسیم می کنیم و مسئله را حل می کنیم.
    در این پست مسئله ی مرتب سازی ادغامی یا merge sort را در زبان برنامه نویسی c# بررسی می کنیم و در نهایت سورس کد آن را به همراه فایل اجرایی برنامه ،ضمیمه ی این پست می کنیم.
    در همین این الگوریتم را در زبان c++ بررسی می کنیم و سورس آن را به صورت کامل در اختیار شما قرار می دهیم.
    قابل ذکر است که این الگوریتم به صورت بازگشتی یا Recursive هست یعنی در تابع خود تابع اصلی دوباره صدا زده می شود.
    پیچیدگی زمانی این الگوریتم n log n است که در مقایسه با bubble sort که n^2 است،سرعت بالاتری دارد.

    مرتب سازی ادغامی به صورت divide-and-conquer algorithm بدین صورت است که ما لیست گرفته شده از کاربر را به 2 قسمت تبدیل می کنیم.
    سپس هر قسمت را دوباره به قسمت های مساوی تبدیل می کنیم و می شکنیم تا در نهایت به 1 المنت جدا برسیم.سپس المان ها را با هم مقایسه می کنیم و ادغام می کنیم و با المان های بعدی مقایسه می کنیم به همین ترتیب تا نهایتا به یک آرایه ی مرتب شده برسیم.
    شکل زیر این مطلب را می رساند :

    در کتاب جعفر نژاد قمی شبه کد بدین صورت است :

    کد:
    کد PHP:
    void mergsort (int n keytype S [ ])

     {

     const 
    int h Į n/2 ⌡ n – h;

     
    keytype U [1...h],[1..m];

     if (
    >1) {

     
    copy S[1through S[hto U[h];

     
    copy S [1through S[hto V[1through V[m];

      
    mergesort(hU);

     
    mergesort(m,V);

     
    merge (U,V,S);

     }

     } 
    الگوریتم ادغام :
    کد:
    کد PHP:
    void merg int h int m, const keytype U[ ],

     const 
    keytype V[ ],  

     
    keytype S[ ] )

     {

     
    index i k;

     
    11;

     while (
    <= && <= m) {

     if (
    [i] < [j]) {

     
    [k] = [i]

      
    i+ + ;

     }

     else {

     
    [k] = [j];

     
    j+ +;

     }

     
    k+ +;

     }

     if ( 
    h)

     
    copy V [jthrough V [mto S [kthrough S ]

     else

     
    copy U [ithrough U [hto S [kthrough S 

     } 
    اما کدی که ما داریم بدین صورت است :


    کد:
    کد PHP:
    //Sort array A from index p to index r
    MergeSort(Apr)
        if 
    r
            q 
    floor((p+r)/2)
            
    MergeSort(Apq)
            
    MergeSort(Aq+1r)
            
    Merge(Apqr)

    Initial call: MergeSort(A, 1, n).

    Merge() assumes that the array A is sorted from p to q, and from q+1 to r. Then the two parts are “shuffled” to create a sorted part of the array from index p to index r.

    Note: p and r are NOT necessarily the first and the last slot. Array A can be sorted for just a portion of it.

    کد:
    کد PHP:
    [PHP]//merge two sorted parts of array A
    Merge(Apqr) {
        
    n1 q-p+1
        n2 
    r-q
        
    //create L[1, …, n1+1] and R[1, …, n2+1]
        
    for 1i ≤ n1i++
            
    L[i] = A[p+i-1]
        for 
    1j ≤ n2j++
            
    R[j] = A[q+j]
        
    //put sentinels
        
    L[n1+1] = 
        R
    [n2+1] = 

        i 
    1
        
    for ( pk ≤ rk++ ) 
            if ( 
    L[i≤ R[j] ) 
                
    A[k] = L[i]
                
    i+1
            
    else  
                
    A[k] = R[j]
                
    j+1

    [/PHP]

    [color=#0000CD]حال این آرایه را trace می کنیم .یک آرایه ی 4 عنصری با المان های زیر :[/color/]
    کد PHP:
     Tracing MergeSort(1,4on array = < 4  3 1 2 >.
    MergeSort(1,4)   14
        q 
    2
        MergeSort
    (1,212
            q 
    1
        MergeSort
    (11) -> kick out
        MegeSort
    (2,2)  -> kick out
        Merge
    (1,2)    ->. Will modify the slots 1 and 2 of array A to be 3 4,
                    
    i.e= <3 4 1 2>.
        
    MergeSort(3,4)  3r=4
            q 
    3    
        MergeSort
    (33) -> kick out
        MegeSort
    (4,4)  -> kick out
        Merge
    (3,4)    ->. Will modify the slots 3 and 4 of array A to be 1 2,
                    
    i.e= <3 4 1 2>.
        
    Merge(1,4) -> will modify array A to be <1 2 3 4>. 

    حال به صورت حرفه ای تر همین trace را انجام می دهیم :
    کد PHP:
    Tracing MergeSort(1,4on array = < 4  3 1 2 >:

    4  3   1  2             MergeSort(1,4)
    4  3            MergeSort(1,2)
    4            MergeSort(1,1)
        
    3            MergeSort(2,2)
    3  4            Merge(1,1,2)  -or is it 1,2,2?
             
    1  2        MergeSort(3,4)
             
    1        MergeSort(3,3)
                 
    2        MergeSort(4.4)
            
    1  2        Merge(3,4,4) or is it 3,3,4?
    1  2  3  4        Merge(1,2,4
    همان طور که می بیند این کد به درستی کار می کند.
    ================================================== ========
    اما چیزی که در فایل ضمیمه قرار گرفته در واقع این برنامه است اما به زبان سی شارپ که هم فایل اجرایی هست و هم سورس کد کامل
    چیزی که این برنامه اجرا می کند مانند شکل زیر است :
    شنبه : یارب العالمین 1شنبه : یا ذاالجلال والاکرام
    2شنبه : یا قاضی الحاجات 3شنبه : یاارحم الراحمین
    4شنبه : یا حی یاقیوم 5شنبه : لا اله الا الله الملک الحق المبین
    جمعه : اللهم صل علی محمد وال محمد وعجل فرجهم

  2. 2 کاربر از پست مفید آبجی سپاس کرده اند .


  3. #2
    کاربر جدید
    رشته تحصیلی
    کام
    نوشته ها
    1
    ارسال تشکر
    0
    دریافت تشکر: 0
    قدرت امتیاز دهی
    0
    Array

    پیش فرض پاسخ : الگوریتم مرتب سازی ادغامی Merge Sort به روش تقسیم و حل+سورس کددر c#

    سلام
    ببخشید میشه این برنامه رو به زبان c بهم میل کنید
    ghoorishy@yahoo.com
    من منتظرم

  4. #3
    کاربر جدید
    رشته تحصیلی
    کامپیوتر
    نوشته ها
    1
    ارسال تشکر
    0
    دریافت تشکر: 0
    قدرت امتیاز دهی
    0
    Array

    پیش فرض درخواست پروژه

    سلام خسته نباشید(ابجی)
    من برنامه مرتب سازی ادغامی و یا سریع رو به زبان سی شارپ میخوام هر کار کردم اصلا نتونستم فایلی رو که گزاشتین رو صفحه پیدا کنم فقط کد ها به زبان دیگه ای بود میشه لطف کنید و برای میلم بفرستید ممنون میشم ftalei69@yahoo.com
    واقها حیاتیه یه دنیا تشکررررررررررررررر

  5. #4
    دوست آشنا
    نوشته ها
    672
    ارسال تشکر
    1,826
    دریافت تشکر: 4,412
    قدرت امتیاز دهی
    2953
    Array
    BaAaroOoN's: جدید134

    پیش فرض پاسخ : درخواست پروژه

    سلام.من سورس برنامه ی4نفره ی منچ رو میخواستم واسه پروزه دانشگاهی

  6. #5
    کاربر جدید
    رشته تحصیلی
    رایانه
    نوشته ها
    1
    ارسال تشکر
    0
    دریافت تشکر: 0
    قدرت امتیاز دهی
    0
    Array

    پیش فرض پاسخ : الگوریتم مرتب سازی ادغامی Merge Sort به روش تقسیم و حل+سورس کددر c#

    سلام پس چرا نیست مرتب سازی سی شارپ
    اگه میشه بی زحمت برام بفرستید خیلی احتیاج دارم
    ghasemi_s70@yahoo.com

  7. #6
    کاربر جدید
    نوشته ها
    1
    ارسال تشکر
    0
    دریافت تشکر: 0
    قدرت امتیاز دهی
    0
    Array

    پیش فرض پاسخ : الگوریتم مرتب سازی ادغامی Merge Sort به روش تقسیم و حل+سورس کددر c#

    با سلام و خسته نباشید.
    هر چقدر گشتم فایل ضمیمه ای ندیدم . لطفا فایل ضمیمه را جهت دانلود در این پست قرار درهید

    با تشکر

  8. #7
    کاربر جدید
    رشته تحصیلی
    کامپیوتر
    نوشته ها
    57
    ارسال تشکر
    3
    دریافت تشکر: 86
    قدرت امتیاز دهی
    0
    Array
    مرضیه پرهیزکار's: جدید110

    پیش فرض پاسخ : الگوریتم مرتب سازی ادغامی Merge Sort به روش تقسیم و حل+سورس کددر c#

    سلام امیدوارم هرجا هستین هستین خوب باشین .لطفا کمکم کنید در مورد الگوریتم ضرب چند جمله ای به روش تقسیم و حل ممنونم
    marziyperhiskar@yahoo.com

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. مقاله: سیستم عامل ( مقاله )
    توسط Admin در انجمن بخش مقالات نرم افزار
    پاسخ ها: 9
    آخرين نوشته: 25th April 2013, 01:33 AM
  2. آموزشی: آشنایی با طراحی الگوریتم ها
    توسط آبجی در انجمن مهندسی کامپیوتر - نرم افزار
    پاسخ ها: 1
    آخرين نوشته: 27th October 2010, 09:44 PM
  3. آموزشی: فشرده سازی فایل های تصویری
    توسط آبجی در انجمن آموزش گرافیک
    پاسخ ها: 0
    آخرين نوشته: 2nd February 2010, 01:20 PM
  4. آموزشی: الگوریتم های مرتب سازی آرایه ها
    توسط آبجی در انجمن مهندسی کامپیوتر - نرم افزار
    پاسخ ها: 0
    آخرين نوشته: 21st November 2009, 12:13 PM
  5. آموزشی: ژنتیک و شبیه سازی
    توسط Mina_Mehr در انجمن ژنتیک
    پاسخ ها: 0
    آخرين نوشته: 18th May 2009, 01:05 AM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •