面试题8

来源:互联网 发布:电玩战魂赫卡里姆淘宝 编辑:程序博客网 时间:2024/05/14 03:08

给定一个有序数组A,长度为len,和一个数X,判断A数组里是否存在两个数相加为X。bool judge(int *A,len,X)。存在返回True,不存在返回False。

#include<stdio.h>#include<stdlib.h>#define N 6#define sum_A 15int judge(int *A, int len, int X) {    int i = 0, j = len - 1;    while (i < j) {        if (A[i] + A[j] == X) {            return 1;        }        else if (A[i] + A[j] > X) {            j--;        }        else i++;    }    return 0;}int cmp(const void *a, const void *b) {    return *(int*)a - *(int*)b;}int main() {    int A[N] = { 1,2,7,4,11,15 };    /*对数组按从小到大进行排序*/    qsort(A, N, sizeof(int), cmp);    /*从首尾两两相加进行比较*/    int t = judge(A, N, sum_A);    if (t == 1)        printf("True");    else        printf("False");    return 0;}
0 0
原创粉丝点击