求大佬一道用函数和指针给数组排序的问题
数组由用户输入,数组中数的个数为奇数个,要求使用函数和指针,将数组中最大的数放在中间,第二大的数放在最大的数的左边,第三大的数放在最大的数右边,接下来的数按大小依次放在两边,以此类推。
程序代码:#include <stdio.h>
#include <malloc.h>
void input(int* buf,int len)
{
for(int i=0;i<len;i++) scanf("%d",buf+i);
}
void prn(int* buf,int len)
{
for(int i=0;i<len;i++) printf("%d ",*(buf+i));
printf("\n");
}
void sort(int* buf,int len)
{
for(int i=0;i<len;i++)
{
for(int j=i+1;j<len;j++)
{
if(*(buf+i)>*(buf+j))
{
int tmp=*(buf+i);
*(buf+i)=*(buf+j);
*(buf+j)=tmp;
}
}
}
}
void newsort(int* buf,int len)
{
int* tbuf;
tbuf=(int*)malloc(sizeof(int)*len);
int i;
for(i=0;i<len;i++)
{
if(i%2)
{
*tbuf=*(buf+i);
tbuf++;
}
}
buf+=len-1;
for(i=0;i<len;i++)
{
if(i%2==0)
{
*tbuf=*(buf-i);
tbuf++;
}
}
tbuf-=len;
for(i=0;i<len;i++)
{
printf("%d ",*(tbuf+i));
}
printf("\n");
}
int main()
{
int n;
printf("请输入数据个数(应该是奇数,如果不是系统自动转换):");
scanf("%d",&n);
if(n%2==0)
{
++n;
printf("你所希望的个数不是奇数,请按下面数字 %d 录入\n",n);
}
int* buf;
buf=(int*)malloc(sizeof(int)*n);
input(buf,n);
sort(buf,n);
newsort(buf,n);
return 0;
}








