C语言一个数组内如何求出两个最小值,假设有一个int类型的数组,高效的算法来可能会好一些,我有个想法,不知道用排序算法是否可以
#include <stdio.h>
#include <stdlib.h>
void mymin()
{
int a[10] = { 6,4,3,2,7,8,9,10,1,5 };
int i, k, w;
for (i = 0;i < 9;i++)
{
for (k = 0;k < 9 - i;k++)
{
if (a[k] > a[k + 1])
{
w = a[k];
a[k] = a[k + 1];
a[k + 1] = w;
}
}
}
printf("打印最小的两个值:\n%d,%d\n", a[0], a[1]);
}
int main()
{
mymin();
printf("End..........\n");
system("pause");
return 0;
}
高效学习C语言可以看我的主页或者专栏 https://blog.csdn.net/gzplyx?type=blog
没必要排序, 最简单的就是 循环数组 两轮 就行了
只需要O(n)就可以,一趟比较就行啦
#include <stdio.h>
int main()
{
int a[10] = {1,3,8,0,9,7,5,4,2,6};
int min1,min2;
min1=min2=a[0];
for(int i=1;i<10;i++)
{
if(a[i] < min2)
{
min1 = min2;
min2 = a[i];
}
else if(a[i] < min1)
min1 = a[i];
}
printf("最小值为:%d,次小值为:%d\n",min2,min1);
}