求解一個數組裏等於給定整數和的兩個數的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. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章