求解一个数组里等于给定整数和的两个数的O(n)时间复杂度算法


[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #include <iostream>  
  2. using namespace std;  
  3. #define size 10  
  4. //求一个有序数组中和等于某个数的算法  
  5. //若成功则返回1 若失败则返回-1  
  6. //采用从两端分别降低区间  
  7. int togetherAdd(int arr[],int value)  
  8. {  
  9.     int i=0;  
  10.     int j=size-1;  
  11.     while(i<=j)  
  12.     {  
  13.         if(i==j)return -1;  
  14.         if((arr[i]+arr[j])==value)return 1;  
  15.         if((arr[i]+arr[j])>value)j--;  
  16.         if((arr[i]+arr[j])<value)i++;  
  17.     }  
  18. }  
  19. int main()  
  20. {  
  21.     int arr[]={1,5,12,13,20,100,111,112,200,400};  
  22.     cout<<togetherAdd(arr,121);  
  23.     return 0;  
  24. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章