ايران ويج

نسخه‌ی کامل: دوستان کمک کنید 3روز بیشتر مهلت ندارم
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
الگوریتم مرتب سازی ادغامی را به زبان ++c میخاستم خاهش میکنم کمکم کنید 3 روز بیشتر مهلت ندارم باید پروژه تحویل بدم
ممنون میشم کمکم کنید.
سلام.درمورد مرتب سازی ادغامی توضیح بدید کمی.دقیقا بگید چطور مرتب می کنه.
مشکلتون چیه؟ شبه کدش که توی نت زیاده و مطمئنا توی کتابتون هم هست فقط باید تبدیلش کنید.
حال تبدیل هم ندارید کد آمادش هم هست . این یه نمونش که من از اینجا برداشتم:
کد:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
int S[]={27,10,12,20,25,13,15,22},Counter=0;
void mergsort2(int,int);
void merg2(int,int,int);
void main(void) {
            int i;
            clrscr();
            printf("MergeSort Algoritm\n");
            for(i=0,printf("Befor sort: ");i<8;printf("%3d",S[i]),i++);
            mergsort2(0,7);
            for(i=0,printf("\nAfter sort: ");i<8;printf("%3d",S[i]),i++);
            printf("\nThe repetition of main operation is: %d",Counter);
            getch();
}
void mergsort2(int low,int high){
            int mid;
            if (low<high){
                        mid=(low+high)/2;
                        mergsort2(low,mid);
                        mergsort2(mid+1,high);
                        merg2(low,mid,high);
            }
}
void merg2(int low,int mid,int high){
            int i,j,k,index,*U;
            U=(int *) malloc(sizeof(int) * (high-low+1));
            i=low; j=mid+1; k=low;
            while(i<=mid && j<=high){
                        Counter++;
                        if(S[i]<S[j]){
                                    U[k]=S[i];
                                    i++;
                        } else {
                                    U[k]=S[j];
                                    j++;
                        }
                        k++;
            }//end of while
            if(i>mid)
                        for(index=j;index<=high;U[k]=S[index],k++,index++);
            else
                        for(index=i;index<=mid;U[k]=S[index],k++,index++);
            for(index=low;index<=high;S[index]=U[index],index++);
}
توضیحش هم توی ویکی پدیا هست.