两个有序数组拼接,如何确定临界点

feirenaini 2009-10-14 05:43:10
目前碰到这样一个问题,已知有一个大数组是由两个有序数组拼接而成,这两个数组类型有很明显的不同,用什么办法可以获得两个数组的临界点。
例如,有两个不知道size的数组String[]a={1,2,3,4,....}; String[]b={a,b,c,d,....};
这个大数组就是由a,b拼接而成的,即知道前面的子数组是a,后面的那部分是b;但是知道大数组的size,想知道用什么办法可以比较有效率的获得a的size;
...全文
134 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fkdtdckr 2009-10-28
  • 打赏
  • 举报
回复
寒风凛凛,天气变冷了,意味着冬天也随即到来http://www.i2345.cn/。此时我们可要记得向亲友发送天冷祝福短信哦,提醒他们天气变冷了,2345记得保重身体,同时祝福他们冬天快乐。相信以下的短信会非常适合。
zdeepblue 2009-10-28
  • 打赏
  • 举报
回复

bool isInA(int c);

int findB(int ab[], int l, int r)
{
int beg = l;
int n = r - l + 1;
while (n > 0 && isInA(ab[l]))
{
int mid = ab[n/2];
if (isInA[mid])
{
l = mid + 1;
}
else
{
r = mid;
}
n /= 2;
}
return l - beg;
}
showjim 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 feirenaini 的回复:]这两个数组类型有很明显的不同[/Quote]
那应该可以直接二分查找了,难道还有比二分更好的稳定算法?
showjim 2009-10-16
  • 打赏
  • 举报
回复
感觉不怎么好解决.
我想先从两端往中间逼近,直到左值>右值,再采用二分查找,最坏情况要比较n/2次.
zeroieme 2009-10-15
  • 打赏
  • 举报
回复
归并排序
feirenaini 2009-10-15
  • 打赏
  • 举报
回复
怎么压根没人回答啊?是大家对此不赶兴趣么?
绿色夹克衫 2009-10-15
  • 打赏
  • 举报
回复
有点明白题目的意思了,不过LZ还需说明一下,这两个数组里是否有重复的元素?
gukuitian 2009-10-15
  • 打赏
  • 举报
回复
少了一行,

public static void main(String[] args)
{
gukuitian 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feirenaini 的回复:]
嗯,除了二分法还有没有更好的方法呢?
[/Quote]
还有个是一次循环,i=0,j=length; i++,j--
复杂度为o(min(a.leng,b.leng))肯定没有二分快,


//生成String 数组
String str="1231907812345abcdefghijklmnopqrstuvwxyz";
char[] a=str.toCharArray();
String[] BigArray=new String[a.length];
for(int i=0;i<a.length;i++)
{
BigArray[i]=Character.toString(a[i]);
}
//开始二分法
int start=0;
int end=BigArray.length;
System.out.println("i->start->end->BigArray[i]->BigArray[i+1]");
for(int i;;)
{
i=(start+end)/2;
if(!isNum(BigArray[i])==isNum(BigArray[i+1]))
{
System.out.println(i+"-->"+start+"-->"+end+"-->"+BigArray[i]+"-->"+BigArray[i+1]);
break;
}
System.out.println(i+"-->"+start+"-->"+end+"-->"+BigArray[i]+"-->"+BigArray[i+1]);
if(isNum(BigArray[i]))
{
start=i;
}
else
{
end=i;
}
}
}
//判断字母还是数字
public static boolean isNum(String str)
{
try
{
Integer.parseInt(str);
}
catch(Exception e)
{
return false;
}
return true;
}
feirenaini 2009-10-15
  • 打赏
  • 举报
回复
嗯,除了二分法还有没有更好的方法呢?
gukuitian 2009-10-15
  • 打赏
  • 举报
回复
找拼接点吗?二分啊
绿色夹克衫 2009-10-15
  • 打赏
  • 举报
回复
不是很明白问题,lz举个例子吧!
KingWolfOfSky 2009-10-15
  • 打赏
  • 举报
回复
飘过~~

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧