gpt4 book ai didi

C 语言 - 如何修复代码中的二分查找函数?

转载 作者:行者123 更新时间:2023-11-30 20:41:21 28 4
gpt4 key购买 nike

这就是我所拥有的

#include <stdio.h>
#include <stdlib.h>

void print(int a[], int size);
void sort (int a[], int size);
void swap (int* a, int *b);
int search(int searchValue, int a[], int size);

int main()
{
float avg = 0;
float sum = 0;
float arrayr [50];
int i = 0;
int j = 0;
int a;
int b;
int sid = 1;
int number;
int size = sizeof(arrayr) / sizeof(int);
sort(arrayr,size);
print(arrayr,size);

FILE* fp;
fp = fopen("A7data.txt","r");
if(fp==0)
{
printf("File does not exist");
exit(1);
}

for (i=0; i<50; i++)
{
fscanf(fp,"%d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d",&arrayr[i]);
}
sort(arrayr,50);
//printf("%d",a[i]);
printf("Enter student ID -> ");
scanf("%d",&sid);
if (sid == 0)
{
printf("%d is not a valid student ID\n",search(number,arrayr,size));
}
else
{
printf("%d is a valid student ID\n",search(number,arrayr,size));
}

return 0;
}

void print (int a[], int size)
{
int i;
int sid = 0;
int number;
int arrayr;
//for (i = 0; i < size; i++)

//printf("\n");
}

void sort (int a[], int size)
{
int i,j;
for (i = 0; i < size - 1; i++)
{
for (j = i; j < size; j++)
{
if (a[j]<a[i]) swap(&a[i],&a[j]);
}
}
}

void swap (int* a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}

int search(int searchValue, int a[], int size)
{
int low, high, middle;
int sid;
low = 0;
high = size-1;
while (low <= high)
{
middle = (low + high) / 2;
if (searchValue < a[middle])
{
high = middle - 1;
}
else if (searchValue > a[middle])
{
low = middle + 1;
}
else
{
return middle;
}
}
return sid;
}

这是我的输出

 Enter student ID -> 20119084

2001840454 is a valid student ID

Process returned 0 (0x0) execution time : 2.816 s
Press any key to continue.

分配方向是读入作业 7 学生数据文件的副本。它正好有 50 条记录。将学生 ID(文件中的第 1 列)存储到数组中。 按升序对数组进行排序。 编写一个二分查找函数来演示以下内容。

56874837 是有效的学生证。56874838 不是有效的学生证。

http://voyager.deanza.edu/~bentley/ass7data.html这是我们应该读取的数据文件

我的代码没有显示正确的输出,我认为这是因为我的二分搜索函数或函数中的某些内容是错误的。我不确定我做错了什么,因为我的输出没有像指示显示的那样显示。

最佳答案

对于初学者,您将 number 传递给 search,但从未设置过 number。对于其余的,请投入一些精力,使用调试器或 IDE 或 printf 语句来弄清楚您的代码在做什么......从那里您可以弄清楚如何纠正它。

关于C 语言 - 如何修复代码中的二分查找函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15629425/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com