输入一个已经按升序排序过的数组和一个数字,
数组
在数组中查找两个数,使得它们的和正好是输入的那个数字。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("没有符合题意的数组!"); }