标签:net number ++ info oid alt png stdio.h 最小
题目:设计一个算法从数A[1:n]
中同时找出最大元素和最小元素,只需要不超过1.5n-2
次比较。
#include <stdio.h>
#define MIN -1
#define MAX 65535
void find_max_min( int num[], int len )
{
int i, j;
int max = MIN;
int min = MAX;
int tmax, tmin;
int count = 0; /*用来统计比较次数*/
i = 0;
j = len - 1;
while ( i <= j )
{
if ( num[i] < num[j] )
{
tmax = num[j];
tmin = num[i];
count++;
} else {
tmax = num[i];
tmin = num[j];
count++;
}
if ( min > tmin )
min = tmin;
if ( max < tmax )
max = tmax;
count += 2; /*上面的两次比较*/
i++;
j--;
}
printf( "The max number is: %d.\n", max );
printf( "The min number is: %d.\n", min );
printf( "Compare number is: %d.\n", count );
}
int main()
{
int num[10] = { 2, 4, 5, 6, 8, 3, 7, 1, 9, 10 };
find_max_min( num, 10 );
return(0);
}
参考链接:
设计一个算法从数 A[1:n] 中同时找出最大元素和最小元素,只需要不超过 1.5n-2 次比较。
标签:net number ++ info oid alt png stdio.h 最小
原文地址:https://www.cnblogs.com/hglibin/p/10127891.html