码迷,mamicode.com
首页 > 编程语言 > 详细

设计一个算法从数 A[1:n] 中同时找出最大元素和最小元素,只需要不超过 1.5n-2 次比较。

时间:2018-12-16 21:40:39      阅读:262      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!