4.管理员系统可以查看用户账号密码,以及帮助更改,也可以移除车辆中的异常数据
管理员查看用户密码?用户密码明文保存在系统内?
同学,你的编程是在csdn网站学的?欧卖嘎
我们可以理解为折半查找,我们可以现通过n/2先判断两个顺序表的中位数,倘若相同直接输出即可。再者如果比较较小的一方,倘若顺序表的总长为偶数的话,则将中位数和小于它的数一并排除,若为奇数将小于中位数的数排除。大于的一方删除比中位数大的数,奇数偶数判断与上述相同。
int M_search(SqList &L1, SqList &L2, int n){
int s1=0,d1=n-1,m1,s2=0,d2=n-1,m2;
while(s1!=d1||s2!=d2){
m1=(s1+d1)/2;
m2=(s2+d2)/2;
if(L1.data[m1]==L2.data[m2]){
return L1.data[m1];
}
if(L1.data[m1]<L2.data[m2]){
if((s1+d1)%2==0){ //判断是否为偶数,一开始加和为奇数
s1=m1; //奇数保持的原则为排除中位数以后或者之前的元素
d2=m2;
}
else{ //偶数判断原则为向前移动的顺序表排除中位数及其前面的数,往后移动的则为排除中位数以后的数
s1=m1+1;
d2=m2;
}
}
else{
if((s1+d1)%2==0){
d1=m1;
s2=m2;
}
else{
d1=m1;
s2=m2+1;
}
}
}
return L1.data[s1]<L2.data[s2]?L1.data[s1]:L2.data[s2];
}
总结:在判断奇数偶数后,奇数则移动到中位数位置即可,偶数的话向前移动的要移动到中位数后,不包括中位数,往后移动的移动到中位数位置即可。