思路:我们可以先遍历一遍数组,找第一个小的数,然后再找第二小的数。
C语言代码:
- #include
- int a[1000];
- int main()
- {
- int n;
- scanf("%d",&n);
- for(int i=1;i<=n;i++)
- scanf("%d",&a[i]);
-
- //找第一个最小的数
- int min1=1;
- for(int i=1;i<=n;i++)
- if(a[min1]>a[i]) min1=i;
-
- //找第二个最小的数
- int min2=1e9;
- for(int i=1;i<=n;i++)
- {
- if(i==min1) continue;
- if(min2>a[i]) min2=a[i];
- }
-
- //输出
- printf("%d %d",a[min1],min2);
- return 0;
- }
- //时间复杂度为O(n),空间复杂度为O(1),速度快