プログラミングc言語 教えてください

画像
補足

二分探索 binary_search関数 binary_search関数は、探したい数xの インデックス(何番目)を返す関数 int no_search(int a[],int n,int x){ int ret = -1; return ret; } これを改造して作る ansが-1でなかったら、aのans番目を出力 ansが-1だったら“not found”を出力

C言語関連52閲覧

ベストアンサー

0

その他の回答(1件)

不適切な内容が含まれている可能性があるため、非表示になっています。

0

#include <stdio.h> #include <stdlib.h> int binary_search(int a[], int n, int x){     int left, right, mid, ret = -1;     left = 0;     right = n - 1;     while(1){         mid = (left + right) / 2;         if(left > right){             break;         }else if(a[mid] == x){             ret = mid;             break;         }else if(a[mid] < x){             left = mid + 1;         }else if(x < a[mid]){             right = mid - 1;         }     }     return ret; } int main(void){     int n, x, i;     int *a;     int ans;     scanf("%d %d", &n, &x);     a = (int*)malloc(sizeof(int) * n);     if(a == NULL){         printf("ERROR\n");         return -1;     }     for(i = 0; i < n; i++){         scanf("%d", &a[i]);     }     ans = binary_search(a, n, x);     if(ans != -1){         printf("a[%d] = %d\n",ans,a[ans]);     }else{         printf("not found\n");     }     free(a);     return 0; }