面试题9

来源:互联网 发布:机房网络管理 编辑:程序博客网 时间:2024/06/07 11:40

设计一个最优算法来查找一n个元素数组中的最大最小值,已知一种需要比较2n次的方法,请给一个更优的算法。

#include<stdio.h>#define N 9#define MAX_A -9999#define MIN_A 9999int main() {    int A[N] = { 3,2,4,6,9,4,5,8,0 };    int i = 0;    int MIN=MIN_A,MAX=MAX_A;    /*将数组两两进行比较,然后再与保存好的最大最小数比较*/    while (i < ((N / 2) * 2-1)) {        if (A[i] > A[i + 1]) {            if (A[i] > A[i+1]) {                int t = A[i];                A[i] = A[i+1];                A[i+1] = t;            }        }        if (A[i] < MIN)             MIN = A[i];        if (A[i + 1] > MAX)            MAX = A[i + 1];        i = i + 2;    }    /*对数组个数为奇数的情况进行处理*/    if (N % 2 == 1) {        if (A[N-1]< MIN)            MIN = A[N-1];        if (A[N-1] > MAX)            MAX = A[N-1];    }    printf("max=%d  min=%d", MAX, MIN);    return 0;}
0 0