![]() |
#2
rjsp2020-12-08 18:37
|
只有本站会员才能查看附件,请 登录

#include <stdio.h>
void fun(int a[],int n)
{
int i,j,min,max,px,pn,t;
for(i=0;i<n-1;i+=2)
{
min=max=a[i];
px=pn=i;
for(j=i+1;j<n;j++)
{
if(max<a[j]) {max=a[j]; px=j;}
if(min>a[j]) {min=a[j]; pn=j;}
}
if(pn!=i)
{t=a[i]; a[i]=min; a[pn]=t; if(px==i) px=pn;}
if(px!=i+1)
{t=a[i+1]; a[i+1]=max; a[px]=t;}
}
}
int main()
{
int a[9]={9,1,4,2,3,6,5,8,7},i;
fun(a,9);
for(i=0;i<9;i++)
printf("%d ",a[i]);
return 0;
}
void fun(int a[],int n)
{
int i,j,min,max,px,pn,t;
for(i=0;i<n-1;i+=2)
{
min=max=a[i];
px=pn=i;
for(j=i+1;j<n;j++)
{
if(max<a[j]) {max=a[j]; px=j;}
if(min>a[j]) {min=a[j]; pn=j;}
}
if(pn!=i)
{t=a[i]; a[i]=min; a[pn]=t; if(px==i) px=pn;}
if(px!=i+1)
{t=a[i+1]; a[i+1]=max; a[px]=t;}
}
}
int main()
{
int a[9]={9,1,4,2,3,6,5,8,7},i;
fun(a,9);
for(i=0;i<9;i++)
printf("%d ",a[i]);
return 0;
}
把a所指向数组中的数据最初排列为:1,2,3,4,5,6,7,8,9.按以上规则移动数组中的数据后,数据的排列为:1,9,2,8,3,7,4,6,5
请问大家图片高光的地方的那句代码怎么理解 看不懂了。