求数组第二小的数的函数
定义2个临时变量temp1,temp2,分别用来存储数组中的第一个(a[0])跟第二个元素(a[1]),并且进行相应比较,让temp1存放二者中小的那个值,temp2存放大的。
从数组第3个元素a[2]开始遍历,取值,跟temp2进行对比,如果比temp2小,那需要进一步跟temp1进行比较,倘若比temp1还小,那说明此值是目前已知的最小值,
而此步之前的最小值temp1,现在成功变身成为了第二小的值。因此需要进行以下替换操作。temp2=temp1,temp1=a[i];
代码实现:
#include<iostream>
using namespace std;
void sort(int a[],int n,int *s1,int *s2)
{
int temp1,temp2;//临时变量
if(a[0]<a[1])
{
temp1=a[0];
temp2=a[1];
}
else
{
temp1=a[1];
temp2=a[0];
}
for(int i=2;i<n;i++)
{
if(a[i]<temp2)
{
if(a[i]<temp1)
{
temp2=temp1;
temp1=a[i];
}
else
temp2=a[i];
}
}
*s1=temp1;
*s2=temp2;
}
int main()
{
int a[10]={12,34,56,43,32,21,65,67,78,99};
int min1,min2;
sort(a,10,&min1,&min2);
cout<<min1<<""<<min2<<endl;
return 0;
}