我一直在从事涉及搜索数组的活动,我目前正在使用 bsearch 来解决这个问题。问题是,只要该元素小于其前一个元素,bsearch 就无法搜索它。更重要的是,当我正在搜索的元素位于大于或等于 3 的索引中时,就会开始出现此问题。我正在用 C 编码。请我非常需要你们的帮助,我们将不胜感激。这是我的代码:
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
typedef struct{
int elements[MAX];
int count;
}SET;
int cmpfunc(const void * a, const void * b) {
return (*(int*)a > *(int*)b) - (*(int*)a < *(int*)b);
}
void print(SET *s1, SET *s2){
int key = 2;
int *p;
p = bsearch(&key,&s1->elements,s1->count,sizeof(int),cmpfunc);
printf("%p",p,sizeof(s1->elements));
return;
}
int main () {
SET s1 = {{1,5,4,2,6,3},6};
SET s2 = {{1,29,3,5},4};
print(&s1,&s2);
return(0);
}