1.txt

来自「分治求最大最小值 可以很快的求的 时间复杂度比其他算法块多了」· 文本 代码 · 共 50 行

TXT
50
字号
 #include<stdio.h>
 #include<stdlib.h> 
 #define N 100


int n;
void max_min(int *a,int i, int j, int* max,int* min)
{
    int mid,max1,min1,max2,min2;
    if( i==j )
    { *max = * min = a[i]; printf("max=min=%d\n",a[i]);return;}
     if(i == j-1)
    {
    if( a[i] > a[j])
        {*max = a[i];*min = a[j];printf("max=%d    min=%d\n",a[i],a[j]);}
        else
        {*max = a[j];*min = a[i];printf("max=%d    min=%d\n",a[j],a[i]);}
        return ;
     }
    else
    {mid =(i+j)/2;
    max_min(a,i,mid,&max1,&min1);
    max_min(a,mid+1,j,&max2,&min2);
    if(max1>max2) {*max=max1; printf("max=%d\n",max1);}
    else          {*max=max2; printf("max=%d\n",max2);}
    if(min1>min2) {*min=min2; printf("min=%d\n",min2);}
    else          {*min=min1; printf("min=%d\n",min1);}
    }
 }



int main()
 {int i,j;
 int a[N+1]={0};

  int min, max ;
    printf("输入你想判断的数的个数:\n");
    scanf("%d",&n);
    printf("输入你要判断的%d个数:\n",n);
    for(i=0;i<n;i++)  scanf("%d",&a[i]);
     i=0;j=n-1;
      max=min=a[0];
      max_min(a,i,j,&max,&min);
      printf("\n最后得到最大最小值:\n");
      printf("max=%d   min=%d",max,min);
      getch();
      return 0;

 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?