مشکل در نوشتن مرتب سازی ادغامی - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکل در نوشتن مرتب سازی ادغامی

0 امتیاز

من کد زیر رو برای مرنب سازی اذغامی نوشتم بقیشو نمی دونم چکار کنم ؟

میشه کمک کنین :(((

void merge(int *arr,int s,int e,int t1)
{
    int first=s;
    int second=t1;

    if(arr[first]>arr[second])
    {
        int temp=arr[first];
        arr[first]=arr[second];
        arr[second]=temp;
        second++;
    }

}

void merge_sort(int arr[],int s,int e)
{
    if(s-e< 2 )
    {
        return;
    }
    int t1=(s-e)/2;
    merge_sort(arr,s,t1);
    merge_sort(arr,t1,e);
    merge(arr,s,e,t1);
}

 

سوال شده بهمن 24, 1392  بوسیله ی ُSegmentF (امتیاز 12)   1 1

1 پاسخ

+2 امتیاز
 
بهترین پاسخ
#include <iostream>
#include <stdlib.h>
using namespace std;
void Merge(int*arr,int start,int mid,int end)
{
    int *temp=new int[end-start];
    int sub1=start;
    int sub2=mid;
    int loc=0;

    while( (sub1 < mid) && (sub2 < end) )
    {
        if(arr[sub2]<arr[sub1])
            temp[loc++]=arr[sub2++];
        else
            temp[loc++]=arr[sub1++];
    }

    for(int i=sub1;i<mid;i++)
        temp[loc++]=arr[sub1];
    for(int i=sub2;i<end;i++)
        temp[loc++]=arr[sub2];
    for(int i=0;i<end-start;i++)
        arr[start+i]=temp[i];

    delete[] temp;
}


void Merge_sort(int *arr,int start,int end)
{
    if(end-start<2)
        return;
    int mid= (start+end)/2;
    Merge_sort(arr,start,mid);
    Merge_sort(arr,mid,end);
    Merge(arr,start,mid,end);
}

int main(int argc, char *argv[])
{
    int a[10];

    for(int i=0;i<10;i++)
    {
        a[i]=rand()%10;
        cout<<a[i]<<endl;
    }
    
    Merge_sort(a,0,10);
    
    cout<<"++++++++++++++++++++++\n";
    
    for(int i=0;i<10;i++)
    {
        cout<<a[i]<<endl;
    }
}

 

پاسخ داده شده اسفند 1, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اسفند 1, 1392 بوسیله ی ُSegmentF
...