-algorithm
num 001
(本题采用遍历方式即可)
扩展(假如有序数据量比较大)(无序可用快排进行排序)
思路:定义左节点
struct leftnode{
int Value;
int index;
}
//定义右节点
struct leftnode{
int value;
int index;
}
leftnode.Value=num[0];
int direct =0 //表明判断方向 0代表固定左节点 寻找右节点
int key= target-leftnodeValue//差值
--采用二分查找(传入key,)
if(direct==0&(num[i]<key&num[i+1]>key||i=num.length-1)){
rightnode.Value=num[i];
rightnode.index=i;
direct=1;
key=target-rightnode.value;
递归调用二分查找;
}
if(diret==1&(num[i]>key&num[i-1]<key){
leftnode.value=num[i];
leftnode.index=i;
direct=0;
key=target-leftnode.value;
递归调用二分查找;
}
if(key=num[i])
{
int[] result;
if(direct==0)
{
result[0]=lestnode.index;
result[1]=i;
}
if(direct==1){
result[0]=i;
result[1]=rightnode.indexd;}
}