如何在一个整型数组中找出最小的两个元素的下标
问题描述:已知一个整型数组中长度为 n ,且数组中的数据无序.现要求出数组中最小的两个数的下标.
我写的一个程序如下:
#include<stdio.h>
void main()
{
int a[10]={2, 0, 2, -10, 3, -1, -2, -3, 8, 0};
int s1 = 0, s2 = 0, i;
for(i = 0; i < 10; i++)
{
if(a[i] < a[s1])
{
s1 = i;
}
}
for(i = 0,s2 = (s1 + 1)%10; i < 10; i++)
{
if(a[i] < a[s2] && i != s1)
{
s2 = i;
}
}
printf("最小两数的下标分别为: %d, %d\n\n", s1, s2);
printf("最小两数为: %d, %d\n\n", a[s1], a[s2]);
}
#include <iostream>
#include <cmath>
#include <windows.h>
using namespace std;
int main()
{
int a[10]={2, 0, 2, -10, 3, -1, -2, -3, 8, 0};
int s1 = 0;
int s2 = 1;
if (a[s1] > a[s2])
{
swap(s1, s2);
}
for(int i = 2; i < 10; i++)
{
if (a[i] < a[s2])
{
s2 = i;
if (a[s1] > a[s2])
{
swap(s1, s2);
}
}
}
printf("最小两数的下标分别为: %d, %d\n\n", s1, s2);
printf("最小两数为: %d, %d\n\n", a[s1], a[s2]);
system("pause");
return 0;
}