C语言分治法 |
您所在的位置:网站首页 › c语言求一组数的和 › C语言分治法 |
#include void main() { void partF(int *a,int m,int n,int *min1,int *min2,int *max1,int *max2); int num; scanf("%d",&num); int a[num]; for(int i=0;i *min1 = *min2 = *max1 = *max2 = a[m]; } //二,进行最低层的比较 else if(m == n-1){ if(a[m] *min1=a[n]; *min2=a[m]; *max1=a[m]; *max2=a[n]; } } //递归部分 else{ mid = (m+n)/2; //借助 l 和 r 的便利把数组递归式分成两部分,直到分化成一。然后开始返还 partF(a, m, mid, &lmax1, &lmax2, &lmin1, &lmin2); partF(a, mid+1, n, &rmax1, &rmax2, &rmin1, &rmin2); //比大小 //max比较 if(lmax1 < rmax1){ if(lmax1 < rmax2){ *max1 = rmax1; *max2 = rmax2; } else{ *max1 = rmax1; *max2 = lmax1; } } else{ if(lmax2 > rmax1){ *max1 = lmax1; *max2 = lmax2; } else{ *max1 = lmax1; *max2 = rmax2; } } //min比较 if(lmin1 > rmin1){ if(lmin1 > rmin2){ *min1 = rmin1; *min2 = rmin2; } else{ *min1 = rmin1; *min2 = lmin1; } } else{ if(lmin2 > rmin1){ *min1 = lmin1; *min2 = rmin1; } else{ *min1 = lmin1; *min2 = lmin2; } } } } |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |