想要将一组乱序的数排列,在插入一组数,使其变为升序数列。 财富值86

2016-10-22 13:48发布

现在每次输出都会少掉最大项,还会多出来一些0,请问如何解决?

include<cstdio>

include<cstdlib>

long long int a[1000];
long long int c[1000];

void sort(long long int as[],long long int left,long long int right)
{

if(left<right)   {   int i = left;   int j = right;   int x = as[i];    while(i<j)   {       while(i<j&&as[j]>x)           j--;       if(i<j){           as[i] = as[j];           i++;       }       while(i<j&&as[i]<x)           i++;       if(i<j){        as[j] = as[i];        j--;       }   }   as[i] = x;   sort(as,left, i-1);   sort(as,i+1, right);   }  

}

void addsort(long long int num)
{

printf("aPlease input the number of the integers you want to add to the origin array:
"); long long int addnum,i,j,k; scanf("%lld",&addnum); long long int add[10000]; printf("aPlease input the integers you want to add one by one:
"); for (i=1;i<=addnum;i++) {     scanf("%lld",&add[i]); } if (addnum > 1) {     sort(add,1,addnum); }  long long int addposition = 1; long long int aposition = 1; long long int totalnum; totalnum = num + addnum;  printf("The final array is:
");  for (i=1;i<=totalnum-5;i++) {     if (a[aposition] > add[addposition])     {         printf("%lld ",add[addposition]);         addposition++;     }     if (a[aposition] == add[addposition])     {         printf("%lld %lld ",add[addposition],add[addposition]);         i++;         aposition++;         addposition++;     }     if (a[aposition] < add[addposition])     {         printf("%lld ",a[aposition]);         aposition++;      }  } printf("
");  return;

}

int main()
{

long long int i,j,num; printf("aPlease input the number of the integers in the origin arrray:
"); scanf("%lld",&num); printf("aPlease input the integers in the origin array one by one:
"); for (i=1;i<=num;i++) {     scanf("%lld",&a[i]); } sort(a,1,num); addsort(num); system("pause"); return 0;

}

友情提示: 问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
0条回答

一周热门 更多>