Помогите составить программу: 1. Организовать одномерный массив из N элементов 2....

0 голосов
29 просмотров

Помогите составить программу:
1. Организовать одномерный массив из N элементов
2. Организовать двоичный поиск заданного элемента.


Информатика (17 баллов) | 29 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

//Dev-C++ 5.11

#include
int binaryFounder(int*,int,int,int,int*);

int main(void)
 {int ar[100],n,res=-1,i,j,buf,val,arind[100];
 scanf("%d",&n);
 for(i=0;i  scanf("%d",&ar[i]);
 printf("Enter searching value:");
 scanf("%d",&val);
 for(i=0;i  arind[i]=i;
 for(i=0;i  for(j=i+1;j   if(ar[i]>ar[j])
    {buf=ar[i];
    ar[i]=ar[j];
    ar[j]=buf;
    buf=arind[i];
    arind[i]=arind[j];
    arind[j]=buf;}
 binaryFounder(ar,0,n-1,val,&res);
 if (res==-1)
  printf("Not found");
 else
  printf("Found in position %d",arind[res]);
 return 0;}


int binaryFounder(int ar[],int left,int right,int val,int* res)
 {int kar=(left+right)/2;
 if (*res!=-1)
  return 0;
 if (left>right)
  return 0;
 if (ar[kar]==val)
  *res=kar;
 if (ar[kar]  binaryFounder(ar,kar+1,right,val,res);
 if (ar[kar]>val)
  binaryFounder(ar,left,kar-1,val,res);}


Пример ввода:
5
1
2
3
4
5
4
Пример вывода:
Found in position 3 //считаем с 0

(38.6k баллов)