【发布时间】:2019-02-12 00:49:46
【问题描述】:
我正在尝试学习 c(它是我的第一语言),但我在完成这项任务时遇到了一些问题。 (这不是功课!)
任务:
在以下类型的结构数组上实现二进制搜索算法(对不起我的英语)。
struct {
unsigned int number;
char* food;
int price;
} pk;
- 给定的数组按升序排序
- 查到号码后,返回
<nr>: <food> <price>\n - 查不到号码时,返回
<nr> is not in pk \n,返回-1
我的代码:
#include <stdio.h>
#include <stdlib.h>
struct {
unsigned int number;
char* food;
int price;
} pk;
int binary search(int pk[], int l, int r, unsigned int number){
int center;
int start = l;
int end = r;
if (start == end){
if (pk[start] == number){
printf ("%d is in pk\n", number); // do not know how to use the struct
}else{
printf ("%d is not in pk\n", number);
return -1;
}
}
else {
center = (start + end)/2;
if (number <= pk[center]){
return binary search(pk, start, center, number);
}else{
return binary search(pk, center+1, end, number);
}
}
}
我的问题:
1) 这段代码可以工作吗?
2)我如何使用这个结构来完成任务,我认为我现在应该完成不同的任务。
【问题讨论】:
-
您没有将任何结构传递给搜索功能。再看看
int pk[]——我不认为你打算在这里传递ints 的数组,是吗? -
这是真的,因为我不知道在这种情况下如何使用结构
标签: c struct binary-search