您的位置:首页 > 其它

查找数组中被删除的一个元素

2011-12-24 10:50 232 查看
一个数组arr0,长度任意,删除其中某个元素后得到数组arr,求删除的元素

最容易想到的方法:顺序查找,两个循环

function
findItem1(
arr0,arr
){
/*         arr0:原始数组         arr: 随机去除某一个元素后的数组     */
if
(
!arr0||arr0.length<1||arr0.length-arr.length!=1
)
return
'error'
;
if
(
arr0.length==1
)
return
arr0[0]; for(
var
i=0,l=arr0.length;i<l;i++[/code]){ for(
var
m=0,n=arr.length;m<n&&arr0[i]!==arr[m];m++[/code]){
if
(
m==n-1
)
return
arr0[i]; } } }[/code] 最容易想到的方法一般都是效率最低的方法,发了半天呆又想到了二分查找

function
findItem2(
arr0,arr
){
/*         arr0:原始数组         arr: 随机去除某一个元素后的数组     */
if
(
!arr0||!arr||arr0.length<1||arr0.length-arr.length!=1
)
return
'error'
;
if
(
arr0.length==1
)
return
arr0[0];
function
compare(
ascArr1,ascArr2
){
//ascArr1.length-ascArr2.length==1
var
ci = Math.floor(
ascArr1.length/2
);
if
(
ascArr1[ci]!==ascArr2[ci]
){
if
(
ci==0||ascArr1[ci-1]==ascArr2[ci-1]
)
return
ascArr1[ci];
else
return
compare(ascArr1.slice(
0,ci
),ascArr2.slice(
0,ci
)); }
else
{
if
(
ci==ascArr2.length-1
)
return
ascArr1[ci+1];
else
return
compare(ascArr1.slice(
ci+1
),ascArr2.slice(
ci+1
)); } }
return
compare(
arr0,arr
); }[/code] 暂时只想到这两种方法,应该还有更高效的方法,想到了再补充。查看本文demo
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐