查找数组中被删除的一个元素
2011-12-24 10:50
232 查看
一个数组arr0,长度任意,删除其中某个元素后得到数组arr,求删除的元素
最容易想到的方法:顺序查找,两个循环functionfindItem1(
arr0,arr){
/* arr0:原始数组 arr: 随机去除某一个元素后的数组 */
if(
!arr0||arr0.length<1||arr0.length-arr.length!=1)
return
'error';
if(
arr0.length==1)
returnarr0[0]; for(
vari=0,l=arr0.length;i<l;i++[/code]){ for(
varm=0,n=arr.length;m<n&&arr0[i]!==arr[m];m++[/code]){
if(
m==n-1)
returnarr0[i]; } } }[/code] 最容易想到的方法一般都是效率最低的方法,发了半天呆又想到了二分查找
functionfindItem2(
arr0,arr){
/* arr0:原始数组 arr: 随机去除某一个元素后的数组 */
if(
!arr0||!arr||arr0.length<1||arr0.length-arr.length!=1)
return
'error';
if(
arr0.length==1)
returnarr0[0];
functioncompare(
ascArr1,ascArr2){
//ascArr1.length-ascArr2.length==1
varci = Math.floor(
ascArr1.length/2);
if(
ascArr1[ci]!==ascArr2[ci]){
if(
ci==0||ascArr1[ci-1]==ascArr2[ci-1])
returnascArr1[ci];
else
returncompare(ascArr1.slice(
0,ci),ascArr2.slice(
0,ci)); }
else{
if(
ci==ascArr2.length-1)
returnascArr1[ci+1];
else
returncompare(ascArr1.slice(
ci+1),ascArr2.slice(
ci+1)); } }
returncompare(
arr0,arr); }[/code] 暂时只想到这两种方法,应该还有更高效的方法,想到了再补充。查看本文demo
相关文章推荐
- 查找一个数组中超过一半的元素
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- php查找一个元素或字符串是否在数组中的三种做法
- 设计一个模板类Sample,用于对一个有序数组采用二分法查找元素下标
- 在一个长度为n的不同元素的数组中顺序查找元素x,查找成功时的平均比较次数为多少
- 设计一个最优算法来查找n个元素数组中的最大值和最小值
- 给定一个整数数组,1≤a [i]≤n(n =数组的大小),一些元素出现两次,其他出现一次 查找在该数组中出现两次的所有元素
- C语言 ,有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用拆半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出“无此数”
- 在排序的数组中二分查找一个元素,返回在数组中它第一次出现的位置
- 8+查找一个旋转数组的最小元素
- 用二分法在一个数组中查找你所需元素
- indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找
- 完成一个排序,求最大最小值,和查找数组元素的程序
- 给定一个经过一次旋转的有序数组,从中查找一个值,若存在返回它的索引,不存在返回-1,假定数组存在重复元素
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- 如何在一个相邻元素差的绝对都是1的数组中快速查找一个数?
- 设计一个更优算法查找一n个元素数组中的最大值和最小值
- 有一个数组,存储的元素为1到10000000的任意数,在其中查找出一个重复的数字
- 在一个升序的但是经过循环移动的数组中查找指定元素
- 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有