14:
題目:輸入乙個已經按公升序排序過的陣列和乙個數字,
在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。
要求時間複雜度是o(n)。如果有多對數字的和等於輸入的數字,輸出任意一對即可。
例如輸入陣列1、2、4、7、11、15和數字15。由於4+11=15,因此輸出4和11。
思路:由於陣列為公升序,因而可以設定頭尾兩個指標,從第乙個元素和最後乙個元素相加,如果大於sum, 則尾指標向前移1個元素,繼續判斷兩個數的和;如果小於sum,則頭指標向後移1個元素,繼續判斷兩個數的和。
#include #include #include using namespace std;
bool search(int a, int &sum, int &begin, int &end)
}return find;
}int main()
; if(search(a, sum, begin, end))
cout << a[begin] << " " << a[end] << endl;
return 0;
}
14 在排序陣列中查詢和為給定值的兩個數字
題目 輸入乙個已經按公升序排序過的陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o n 如果有多對數字的和等於輸入的數字,輸出任意一對即可。例如輸入陣列1 2 4 7 11 15和數字15。由於4 11 15,因此輸出4和11。分析 如果我們不考慮時間複雜度,...
100題 在排序陣列中查詢和為給定值的兩個數
在排序陣列中查詢和為給定值的兩個數 include using namespace std bool findnum int data,unsigned int length,int sum,int n1,int n2 int ahead length 1 int behind 0 while ah...
在排序陣列中查詢和為定值的兩個元素
題目 已知乙個已經按公升序排好序的陣列,現在輸入乙個數值sum,在陣列中查詢兩個數,使得這兩個數的和正好是輸入的sum,列印出這兩個數,如果存在多對這樣的數,依次列印出來。如 array 輸入sum 28,那麼列印出 8,20 10,18 演算法思想1 最傻瓜的演算法,先在陣列中固定乙個值,然後依次...