感觉没有问题了,为什么还一直输出不存在。
#include <stdio.h>
int search(int key,int a[],int len);
int amout[]={1,3,4,5,6,8,25,36,47,};//初始化
int main()
{
int k=1;
// int r=(k,amout[],sizeof(amout)/sizeof(amout[0]));//,main里调用函数。
int r=search(k,amout,sizeof(amout)/sizeof(amout[0]));
if(r==-1)//if(ret==-1)主函数里看 //主函数里就用r 来判断。
{
printf("不存在该值");
}else{
printf("amout[%d]=%d",r,amout[r]);
}
return 0;//r和ret可不一样。
}
//二分法, 函数,
int search(int key,int a[],int len)
{ int ret=-1;
int left=0;
int right=len-1;
//int middle=(left+right)/2;移到里面。
// int k;
while(right>left){
int middle=(left+right)/2;
if(a[middle]==key){
ret=middle;
break;
}else if(a[middle]<key){
left=middle+1;
}else{
right=middle-1;
}
}
return ret;
}
#include <stdio.h>
int search(int key, int a[], int len);
int amout[] = {1, 3, 4, 5, 6, 8, 25, 36, 47}; // 初始化
int main()
{
int k = 1;
int r = search(k, amout, sizeof(amout) / sizeof(amout[0]));
if (r == -1)
{
printf("不存在该值");
}
else
{
printf("amout[%d]=%d", r, amout[r]);
}
return 0;
}
// 二分法, 函数
int search(int key, int a[], int len)
{
int ret = -1;
int left = 0;
int right = len - 1;
int middle;
while (right >= left) // 修改此处的while循环判断条件
{
middle = (left + right) / 2;
if (a[middle] == key)
{
ret = middle;
break;
}
else if (a[middle] < key)
{
left = middle + 1;
}
else
{
right = middle - 1;
}
}
return ret;
}
void QueuePush(Queue* pq, QDataType x)
{
assert(pq);
QNode* newnode = (QNode*)malloc(sizeof(QNode));
if (newnode == NULL)
{
perror("malloc fail");
exit(-1);
}
newnode->data = x;
newnode->next = NULL;
if (pq->tail == NULL)
{
pq->head = pq->tail = newnode;
}
else
{
pq->tail->next = newnode;
pq->tail = newnode;
}
pq->size++;
}