中位数

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指的是数组长度)

posted @ 2022-07-18 15:45  青竹之下  阅读(196)  评论(0编辑  收藏  举报