中位数
void find_mide(int a[],int b[],int n){ int temp; int i=0,j=0,k=0; while (i<n && j<n){ if(a[i]<b[j]){ temp=a[i]; cout<<"temp:"<<temp<<endl; i++; k++; } if(a[i]>=b[j]){ temp=b[j]; cout<<"temp:"<<temp<<endl; j++; k++; } cout<<"k:"<<k<<endl; if(k>=n){ break; } } cout<<"temp:"<<temp<<endl; }
思路:设置两个指针i,j分别用于指向两个数组,将两个数组的值两两比较,较小的向后移动一位。
课本的思路:
分别求A,B的中位数,设为a,b比较a,b
a=b 中位数为a;
a<b A舍弃较小的一半,B舍弃较大的一半
a>b A舍弃较大的一半,B舍弃较小的一半
循环执行
(两个数组的中位数只会在a和b之间出现,所以小的舍弃小的那部分,大的舍弃大的那部分,重复执行即可舍弃n个数据,n指的是数组长度)