Christopher. 发表于 2020-9-16 17:49:12

求大佬帮忙看看哪里错了,运行不出结果

#include<stdio.h>
#include<stdlib.h>

#define MAX 10000

struct List
{
        int data;
        int length;
};
List list;

void init(List &list,int n);
void MergeSort(List &list);
void Merge(List &list,int a[],int L,int R);


void init(List &list,int n)
{
        int i;
       
        list.length=0;
       
        printf("输入序列:");
        for(i=0;i<n;i++)
        {
                scanf("%d",&list.data);
        }
}

void MergeSort(List &list)
{
        int *a = (int *)malloc(list.length);
       
        Merge(list,a,0,list.length-1);
       
        free(a);
}

void Merge(List &list,int a[],int L,int R)
{
        int mid=(L+R)/2;
        int L1=L;
        int R1=mid;
        int L2=mid+1;
        int R2=R;
        int i=L;
       
        Merge(list,a,L1,R1);         //左侧分治
        Merge(list,a,L2,R2);         //右侧分治
       
        while(L1<=R1&&L2<=R2)
        {
                a=list.data<list.data? list.data : list.data;
        }
       
        while(L1<=R1)
        {
                a=list.data;
        }
       
        while(L2<=R2)
        {
                a=list.data;
        }
       
        for(i=L;i<=R;i++)
        {
                list.data=a;
        }
}

int main(void)
{
        int n;
        int i;
       
        printf("输入整数个数:");
        scanf("%d",&n);
       
        init(list,n);
        MergeSort(list);
       
        printf("输出排序结果:");
        for(i=0;i<n;i++)
        {
                printf("%d ",list.data);
       }
       
       printf("\n");
       
       return 0;
}

xieglt 发表于 2020-9-16 18:05:18

#include<stdio.h>
#include<stdlib.h>

#define MAX 10000

struct List
{
      int data;
      int length;
};

List list;
void init(List &list,int n);
void MergeSort(List &list);
void Sort(List &list,int L,int mid,int R);

void init(List &list,int n)
{
      int i;
      
      list.length=0;
      
      printf("输入序列:");
      for(i=0;i<n;i++)
      {
                scanf("%d",&list.data);
                list.length++;
      }
}

void Merge(int A[], int left, int mid, int right)
{
        int len = right - left + 1;
        int * temp = (int *)malloc(len);
        int index = 0;
        int i = left;
        int j = mid + 1;
       
        while (i <= mid && j <= right)
        {
                temp = A <= A ? A : A;
        }
        while (i <= mid)
        {
                temp = A;
        }
        while (j <= right)
        {
                temp = A;
        }

        for (int k = 0; k < len; k++)
        {
                A = temp;
        }
       
        free(temp);
}

void MergeSort(int A[],int L,int R)
{
      if(L>=R)
                {
         return ;
      }
      
      int mid=(L+R)/2;
      
      MergeSort(A,L,mid);            //左侧分治
      MergeSort(A,mid+1,R);            //右侧分治
      Merge(A,L,mid,R);               //排序
}


int main(void)
{
      int n;
      int i;
      
      printf("输入整数个数:");
      scanf("%d",&n);
      
      init(list,n);
                MergeSort(list.data,0,list.length-1);
      
      printf("输出排序结果:");

      for(i=0;i<n;i++)
      {
                printf("%d ",list.data);
      }
      
      printf("\n");
      
      return 0;
}

Christopher. 发表于 2020-9-16 18:52:08

xieglt 发表于 2020-9-16 18:05


大佬问一下那个数组A是什么

xieglt 发表于 2020-9-16 19:03:17

Christopher. 发表于 2020-9-16 18:52
大佬问一下那个数组A是什么

数组A是函数的参数,随便定义什么什么都行。

Christopher. 发表于 2020-9-16 19:04:08

xieglt 发表于 2020-9-16 18:05


哦哦,知道了,懂了懂了
页: [1]
查看完整版本: 求大佬帮忙看看哪里错了,运行不出结果