عضو شوید



:: فراموشی رمز عبور؟

عضویت سریع

نام کاربری :
رمز عبور :
موبایل :
ایمیل :
نام اصلی :
تاریخ : دوشنبه 19 خرداد 1393
بازدید : 1118
نویسنده : هادی مومنی

برنامه: آرایه ای از اعداد را به روش ادغام، یا همان  marge sort مرتب می کند

الگوریتم : 

از دو تابع استفاده می کنیم

1 - تابع  Marge Sort یا  MS().

void ms(int arr[],int lx,int rx)

این تابع از عنصر lx تا عنصر rx آرایه ی arr[] را پردازش می کند.

 

2 - تابع sort یا sortm

void sort(int arr[],int lx,int mid1,int mid2 , int rx)

این تابع  قسمت اول آرایه ی arr یعنی lx تا mid1  و قسمت دوم یعنی mid2 تا rx  را مرتب کرده  و در آرایه  temp نتیجه را که مرتب شده ی دو قسمت فوق می باشد را ذخیره ، سپس توسط دستور زیر ، عناصر مرتب شده را در آرایه ی اصلی کپی می کند.(که mid2=mid1+1)

for(int i=0,k=lobj;i <j;i++,k++) arr[k]=temp[i];

که lobj همان lx و robj همان rx می باشد.

 

* تابع  run در کد جاوااسکریپت ،رشته ی ورودی را به یک آرایه از اعداد تبدیل می کند.

فرمت ورودی اعدا باید به صورت زیر باشد.

example : 5,2,6,4,2,3,9,8,5,

که پس از هر عددی یک "," باید وارد شود و بدون هیچ گونه فاصله ای.

 برنامه مرتب سازی ادغامی با زبان ++C
#include
#include


#define size 10

void sort(int arr[],int lx,int mid1,int mid2 , int rx)
{

   int j=0; 
   int temp[size];
   int lobj=lx,robj=rx;

   //sorting arr[lx]..arr[mid] with arr[mid2]...arr[rx] and save it in temp[]
   while( (lx <= mid1) && (mid2 <= rx) )
   {
         if (arr[lx] < arr[mid2])
        {
                temp[j++]=arr[lx++];
        }
        else{
              temp[j++]=arr[mid2++];
              }
    }
   while( mid2 <= rx)
   {
          temp[j++]=arr[mid2++];
   }
   while( lx <= mid1)
   {
            temp[j++]=arr[lx++];
   }
   //copy temp[] into the original array ( arr[] )
   for(int i=0,k=lobj;i <j;i++,k++)       arr[k]=temp[i];
  }

void ms(int arr[],int lx,int rx)
{


   if(rx > lx)
   {

          int mid1 = (lx + rx)/2;
           int mid2 = mid1+1;

          ms(arr,lx,mid1);
         ms(arr,mid2,rx);
         sort(arr,lx,mid1,mid2,rx);
   }

}

int main()
{

   int test[size] = {5,9,1,8,2,7,3,6,4,0};

   cout<<" Array is ";
   for(int i=0; i          cout<<" "<<test[i];

   ms(test,0,size-1);

    cout<<" sorted array is : ";
   for(int i=0; i          cout<<" "<<test[i];
getch();
return 0;
}

 

  برنامه مرتب سازی ادغامی با زبان #C 
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


void sort(int[] arr,int lx,int mid1,int mid2 , int rx)
{

   int j=0; 
   int[] temp = new int[arr.Length];
   int lobj=lx,robj=rx;

   //sorting arr[lx]..arr[mid] with arr[mid2]...arr[rx] and save it in temp[]
   while( (lx <= mid1) && (mid2 <= rx) )
   {
          if (arr[lx] < arr[mid2])
         {
               temp[j]=arr[lx];
                j = j + 1;
                lx = lx + 1;
         }
         else{
                temp[j]=arr[mid2];
                j = j + 1;
                 mid2 = mid2 + 1;
          }
   }
   while( mid2 <= rx)
   {
          temp[j]=arr[mid2];
           j = j + 1;
           mid2 = mid2 + 1;
   }
   while( lx <= mid1)
   {
           temp[j]=arr[lx];
           j = j + 1;
           lx = lx + 1;
   }
   //copy temp[] into the original array ( arr[] )
   for(int i=0,k=lobj;i <j;i++,k++)           arr[k]=temp[i];
}


void ms(int[] arr, int lx, int rx)
{


   if(rx > lx)
   {

             int mid1 = (lx + rx)/2;
             int mid2 = mid1+1;

              ms(arr,lx,mid1);
              ms(arr,mid2,rx);
              sort(arr,lx,mid1,mid2,rx);
 }

}
private void button1_Click(object sender, EventArgs e)
{

   lbl1.Text = "Sorting ...";
   int[] test = { 0,5,2,3,1,3, 9, 0, 8, 1, 7, 2, 6, 3, 4 };
   ms(test, 0, test.Length - 1);
   lbl1.Text = "";
   for (int i = 0; i < test.Length; i++)
             lbl1.Text = lbl1.Text + test[i] + ",";
}
}
}


می توانید دیدگاه خود را بنویسید

/images/anymous.png
علی در تاریخ : دوشنبه 08 دی 1404 - - گفته است :
وبت عالیه بهم سر بزن


من هادی مومنی دانشجوی کارشناسی نرم افزار کامپیوتر و به زبان برنامه نویسی و طراحی صفحات وب تسلط دارم خوشحال میشم کمکتون کنم لطفا نظراتتون در مورد بهتر شدن این وبلاگ بگید.

RSS

Powered By
loxblog.Com
💬 نظرات کاربران
💬ثبت نام کاربران
💬ورود کاربران