C语言 数组元素大小排序

2024-12-02 14:29:34
推荐回答(2个)
回答(1):

#include

# define N 100

void fun(int *a,int n)

{

int i,j,max,min,px,pn,t;  

for(i=0;i

{

  max=min=a[i];

  px=pn=i;

for(j=i+1;j

{

 if(max

 {max=a[j];px=j;}

 if(min>a[j])

 {min=a[j];pn=j;}

}

if(px!=i)

{

 t=a[i];a[i]=max;a[px]=t;

 if(pn==i)pn=px;

}

if(pn!=i+1)

{t=a[i+1];a[i+1]=min;a[pn]=t;}

}

}

int main()

{

int b[N]={1,4,2,3,9,6,5,8,7};

int i,u,k;

u=9;

printf("the original array is:\n");

for(k=0;k

printf("%4d",b[k]);

printf("\n");

fun(b,u);

printf("\nthe result is:\n");

for(k=0;k

printf("%4d",b[k]);

return 0;

}

回答(2):

这里先直接给个从大到小排列的代码吧::

#include 
# define N 100
void main()
{
int buff[N];
int i,j,numN,temp;

//输入:
printf("Please input an array: ");
for(i=0;i {
scanf("%4d",&buff[i]);
numN=i+1;//输入个数
if(getchar()=='\n')break;
}

//显示输入数组:
printf("\nThe original array is: ");
for(i=0;i {
printf("%d ",buff[i]);
}

//排序:
for(i=0;i {
for(j=i+1;j {
if(buff[i] {
temp=buff[i];
buff[i]=buff[j];
buff[j]=temp;
}
}

}

//排序后输出:
printf("\n\nThe result is: ");
for(i=0;i {
printf("%d ",buff[i]);
}

if(getchar()=='\n');//暂停一下 enter键继续
}


希望对你有所帮助