輸入一個已經按升序排序過的數組和一個數字,
數組
在數組中查找兩個數,使得它們的和正好是輸入的那個數字。spa
時間複雜度是 O(n)。若是有多對數字的和等於輸入的數字,輸出任意一對便可。3d
輸入數組 一、二、四、七、十一、15 和數字 15。因爲 4+11=15,所以輸出 4 和 11。code
比較簡單不作分析了。排序
代碼以下(GCC編譯經過):io
#include "stdio.h" #include "stdlib.h" void findTwoNumber(int a[],int n,int tag); int main(void) { int a[7] = {1,2,4,7,8,11,15}; findTwoNumber(a,7,15); return 0; } void findTwoNumber(int a[],int n,int tag) { int front,tail,sum; front = 0; tail = n-1; sum = front + tail; while(sum != tag && front < tail) { if(sum < tag) front++; else tail--; sum = a[front] + a[tail]; } if(sum == tag) printf("%3d,%3d",a[front],a[tail]); else printf("沒有符合題意的數組!"); }