Как мне вызвать функцию двоичного поиска для запуска? - PullRequest
0 голосов
/ 27 мая 2020

Я изучаю C в данный момент, и мне дали этот код в книге для выполнения двоичного поиска. Я все еще очень смущен вызовом функции C с аргументами, и книга пока не дала мне большого контекста. Я считаю, что третий аргумент - это память (я не совсем уверен). Я пробовал google / bing, но во многих примерах есть функция main вместе с другой функцией, которая вызывается main. Что мне не хватает? Я попытался вызвать binsearch, как в Python, но получил множество ошибок.

#include <stdio.h>

/* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */

int binsearch(int x, int v[], int n)
{
    int low, high, mid;

    low = 0;
    high = n -1;
    while (low <= high) {
        mid = (low + high)/ 2;
        if (x < v[mid]){
            high = mid -1;
        }
        else if (x > v[mid]) {
            low = mid + 1;
        }
        else{
            // found match
            return mid;
        }
        // no match
        return -1;
    }

}

binsearch(4,[1,2,3,4,5,6,7,8],8)

Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Если вы хотите запустить программу C или проект C, у вас должна быть основная функция или главный файл.

Попробуйте скомпилировать и запустить код

#include <stdio.h>

/* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */

int binsearch(int x, int v[], int n)
{
    int low, high, mid;

    low = 0;
    high = n -1;
    while (low <= high) {
        mid = (low + high)/ 2;
        if (x < v[mid]){
            high = mid -1;
        }
        else if (x > v[mid]) {
            low = mid + 1;
        }
        else{
            // found match
            return mid;
        }
        // no match
        return -1;
    }

}
int main(int argc, char ** argv){
  int a[] = {1,2,3,4,5,6,7,8};
  int re = binsearch(4,a,8);
  printf("re = %d\n", re);
  return 0;
}
Это выходной результат
0 голосов
/ 27 мая 2020

По сути, нужно сделать что-то вроде этого. Но, как рекомендуется в комментариях (даже если легко пропустить вперед, когда мы уже знаем какой-то другой язык), пожалуйста, go вернитесь назад и убедитесь, что вы сначала усвоили основы C.

int main(){
    int arr[]={1,2,3,4,5,6,7,8};
    int index=binsearch(4,arr,8);   
    printf("Found at index: %d",index);
}
...