#include<stdio.h>
#define Maxsize 10
typedef struct {
int data[Maxsize];
int length;
}SqList;
void InitList(SqList &L) {
for (int i = 0;i < Maxsize;i++) {
L.data[i] = 0;
}
L.length = 0;
}
void PrintList(SqList L) {
for (int i = 0;i < L.length;i++) {
printf("%d ", L.data[i]);
}
printf("\n长度为%d ", L.length);
}
void SetList(SqList &L, int i, int e) {
L.data[i - 1] = e;
L.length++;
}
bool ListInsert(SqList &L, int i, int e) {
if(i<1|| i>L.length+1){
return false;
}
if (L.length >= Maxsize) {
return false;
}
for (int j = L.length;j >= i;j--) {
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
L.length++;
return true;
}
bool ListDelete(SqList &L, int i, int &e) {
if (i<1 || i>L.length) {
return false;
}
e = L.data[i - 1];
for (int j = i;j < L.length;j++) {
L.data[j - 1] = L.data[j];
}
L.length--;
return true;
}
int GetElem(SqList L,int i) {
return L.data[i - 1];
}
int Del_Min(SqList &L)
{
if(L.length==0)return 0;
int pos=0;
int min=L.data[0];
for(int i=1;i<L.length;i++){
if(L.data[i]<min){
min=L.data[i];
pos=i;
}
}
L.data[pos]=L.data[L.length-1];
L.length--;
return min;
}
void Reserve(SqList &L){
if(L.length==0) return;
for(int i=0;i<L.length/2;i++){
int temp=L.data[i];
L.data[i]=L.data[L.length-i-1];
L.data[L.length-i-1]=temp;
}
}
bool Del_x(SqList &L,int x){
int k=0;
for(int i=0;i<L.length;i++){
if(L.data[i]!=x){
L.data[k++]=L.data[i];
}
}
L.length=k;
return true;
}
bool Del_s_t(SqList &L,int s,int t){
int k=0;
for(int i=0;i<L.length;i++){
if(L.data[i]<=s||L.data[i]>=t){
L.data[k++]=L.data[i];
}
}
L.length=k;
return true;
}
bool Del_same(SqList &L){
int i=0,j=1;
for(j=1;j<L.length;j++){
if(L.data[i]!=L.data[j]){
L.data[++i]=L.data[j];
}
}
L.length=i+1;
}
void Merge(SqList PA,SqList PB,SqList &PC){
if(PA.length+PB.length>PC.length) return;
int i=0,j=0,k=0;
while(i<PA.length&&j<PB.length){
if(PA.data[i]<PB.data[j]){
PC.data[k++]=PA.data[i++];
}
else PC.data[k++]=PB.data[j++];
}
while(i<PA.length)
PC.data[k++]=PA.data[i++];
while(j<PB.length)
PC.data[k++]=PB.data[j++];
PC.length=k;
}
void Search_x_Insert(SqList &L,int x){
int low =0,high=L.length-1,mid;
while(low<=high){
mid=(low+high)/2;
if(L.data[mid]==x)
break;
if(L.data[mid]<x)
low=mid+1;
else high=mid-1;
}
if(L.data[mid]==x&&mid!=L.length-1){
int temp=L.data[mid];
L.data[mid]=L.data[mid+1];
L.data[mid+1]=temp;
}
if(low>high){
for(int i=L.length-1;i>high;i--){
L.data[i+1]=L.data[i];
}
L.data[high+1]=x;
L.length++;
}
}
int Search_mid(SqList A,SqList B){
int i=0,j=0,k=0,mid=(A.length+B.length-1)/2;
while(1){
if(i < A.length && j < B.length){
if(A.data[i]<=B.data[j]){
if(k==mid)
return A.data[i];
k++;i++;
}else{
if(k==mid)
return B.data[j];
j++;k++;
}
}
else{
break;
}
}
}
int main() {
SqList L;
InitList(L);
SetList(L, 1, 1);
SetList(L, 2, 2);
SetList(L, 3, 3);
SetList(L, 4, 3);
SetList(L, 5, 5);
SetList(L, 6, 6);
SqList C;
SqList LA={11,12,13,14,15};
SqList LB={6,7,8,9,10};
int i= Search_mid(LB,LA);
printf("%d",i);
return 0;
}