交换算法(将最小值换到第一位,最大值换到最后一位)
#include<stdio.h>
void main(){ int o=0;
int buf[10]; 接收用户输入的数组
for(;o<10;o++)
{
scanf("%d",&buf[o]);
}
int i=0,j=0,k=0,a=0,b=0;
for(;i<10;i++)
{
if(j<buf[i])
{
j=buf[i]; 得到最大值
}
if(k>buf[i])
{
k=buf[i]; 得到最小值
}
}
printf("%d %d\n",j,k);
for(i=0;i<10;i++)
{
if(j==buf[i])
{
a=i; 得到最大值的位置
printf("%d\n",a);
}
if(k==buf[i])
{
b=i; 得到最小值的位置
printf("%d\n",b);
}
} }
buf[0]=buf[0]+buf[b];
buf[b]=buf[0]-buf[b];
buf[0]=buf[0]-buf[b]; 将最小值换到第一位
buf[9]=buf[9]+buf[a];
buf[a]=buf[9]-buf[a];
buf[9]=buf[9]-buf[a]; 将最小值换到最后位
for(i=0;i<10;i++)
{
printf("%d ",buf[i]);
}
}
对调算法(将数组元素对调)
#include<stdio.h>
void main()
{
int buf[10]={1,2,3,4,5,6,7,8,9};
int i=0;
for(;i<5;i++)
{
buf[10]=buf[8-i]; 将数组元素按最中间的元素对调
buf[8-i]=buf[i];buf[i]=buf[10];
}
buf[10]=0;
int j=0;
for(;j<9;j++)
{
printf("%d ",buf[j]);
}
}