ZKX's LAB

找出数组中和为目标值的两个数 算法:找数组中两个数之和为目标数的数组的下标

2021-04-23知识4

有15个数按大由小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该组中第几个元素的值. 题目不是太明白,楼主百是想定义了15个数,然后输入度一个任意数除2,找到任意数除2在定义的15个数中的位置是知吗?那要是输入的任意数除2后的数不在定义的数中怎道么办?是显示输入错误还是其他的什么?includeint main(){double a[15],n,k;int m;for(m=0;m;m+){cout输入\"个由大到小数版\";cin>;>;a[m];}cout输入要查找的数权\";cin>;>;n;k=n/2;bool falg=false;for(m=0;m;m+){if(k=a[m]){cout该数再数组中的位置是:\";falg=true;}if。falg)cout查无此数\";}system(\"PAUSE\");return 0;} 这次应该没错了

Java如何获取有序数组中和为指定值的两个索引,题目:给定一个升序排列的有序数组,找到两个数使得它们的和等于目标数。算法应该返回这两个下标值的索引idex1和idex2,注意。

[算法C++]检测数组里是否有两个数之和等于某个数解决方法一:先将数组排序,然后从两头开始遍历数组排序后,从左端开始取最小值,从右端取最大值,判断两者之和与目标的大小:1.等于时,输出两个数;2.大于时,右端移到第2个数,继续判断;3.小于时,左端移到第2个数,继续判断。includeincludeincludeusing namespace std;void fun1(int a[],int length,int target){给数组排序sort(a,a+length);left是最小值,right是最大值int left=0,right=length-1;while(left){int tmp=a[left]+a[right];if(tmp=target){cout[left][right];return;}else if(tmp>;target){/和比目标大,就减小right,从而减小和right-;}else {/和比目标小,就增大left,从而增大和left+;}}cout无;}int main(){int a[]={1,3,2,7,6,9,8,0,5,4};int target=0;while(cin>;>;target){fun1(a,10,target);}}上述方法虽然简单,但弊端也有,没法输出所有等于目标值的两个数。解决方法二:暴力解法,记录下每一个数与其他数的和放在一个二维数组里,然后遍历即可,这样可以记录下所有的和等于目标值的数值对,如下:假设输入数组为:2 3 4 5 1有如下矩阵:234512-5 6 7 33。

#找出数组中和为目标值的两个数

随机阅读

qrcode
访问手机版