fork download
  1. //binary search
  2.  
  3.  
  4. #include<stdio.h>
  5. #include<stdlib.h>
  6. typedef struct
  7. {
  8. int* data;
  9. int size;
  10. int capacity;
  11.  
  12.  
  13. } arraylist;
  14.  
  15. void int_arraylist( arraylist* list, int initial_capacity)
  16. {
  17. list->data = (int*)malloc(sizeof(int)*initial_capacity);
  18. list->size= 0;
  19. list->capacity=initial_capacity;
  20. }
  21. void resize_arraylist(arraylist* list)
  22. {
  23. list->capacity *= 2;
  24. list->data=(int*)realloc(list->data,sizeof(int)*list->capacity);
  25.  
  26. }
  27. void add_arraylist(arraylist* list,int value)
  28. {
  29. if(list->size==list->capacity)
  30. {
  31. resize_arraylist(list);
  32. }
  33. list->data[list->size++]=value;
  34. }
  35.  
  36.  
  37.  
  38.  
  39. int binary(arraylist* list,int target)
  40. {
  41. int mid;
  42. int low=0;
  43. int high=(list->size)-1;
  44.  
  45. while(low<=high)
  46. {
  47. mid=(low+high)/2;
  48. if((list->data[mid]) == target)
  49. {
  50. return mid;
  51. }
  52. else if((list->data[mid])>target){
  53. high=mid-1;
  54.  
  55.  
  56. }
  57. else if((list->data[mid])<target)
  58. low=mid+1;
  59. else return -1;
  60. }
  61.  
  62. }
  63. int main()
  64. {
  65. arraylist list;
  66. printf("Enter size : ");
  67. int a;
  68. scanf("%d",&a);
  69. int_arraylist(&list,a);
  70. int b;
  71. for(int i=0;i<a;i++){
  72. scanf("%d",&b);
  73. add_arraylist(&list,b);
  74. }
  75.  
  76. //add_arraylist(&list,4);
  77. //add_arraylist(&list,3);
  78. //add_arraylist(&list,2);
  79. //add_arraylist(&list,1);
  80. //add_arraylist(&list,6);
  81. int i,x;
  82. printf("Target : ");
  83. scanf("%d",&x);
  84. i=binary(&list,x);
  85. printf("%d",i);
  86. if(i==-1){
  87. printf("not found") ;
  88. }
  89. }
  90.  
Success #stdin #stdout 0s 5312KB
stdin
Standard input is empty
stdout
Enter size : Target : 0