在排序陣列中查詢和為給定值的兩個數字

2021-06-18 09:17:52 字數 594 閱讀 6705

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 最傻瓜的演算法,先在陣列中固定乙個值,然後依次...