fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct {
  5. int *data;
  6. int length;
  7. int capacity;
  8. } array;
  9. void intialize_array(array* list,int initial_size){
  10.  
  11. list->data=(int*)malloc(initial_size*sizeof(int));
  12. list->length=0;
  13. list->capacity=initial_size;
  14.  
  15. }
  16. void resize(array* list){
  17. list->capacity*=2;
  18. list->data=(int*)realloc(list->data,list->capacity*sizeof(int));
  19. }
  20. void add_elements(array* list,int value){
  21. if(list->length==list->capacity){
  22. resize(list);
  23. }
  24. list->data[list->length++]=value;
  25.  
  26. }
  27. int binary(array* list,int target){
  28. int low,high;
  29. low=0;
  30. high=(list->length-1);
  31. int mid;
  32. while(low<=high){
  33. mid=(low+high)/2;
  34. if(list->data[mid]==target){
  35. return mid;
  36. }
  37. else if(list->data[mid]<target){
  38. low=mid+1;
  39. }
  40. else {
  41. high=mid-1;
  42. }
  43. }
  44. return -1;
  45.  
  46. }
  47. void printArrayList(array* list) {
  48. printf("ArrayList contents: ");
  49. for (int i = 0; i < list->length; i++) {
  50. printf("%d ", list->data[i]);
  51. }
  52. printf("\n");
  53. }
  54.  
  55. int main (){
  56. array list;
  57. printf("capacity:");
  58. int size;
  59. scanf("%d",&size);
  60. int value;
  61. intialize_array(&list,size);
  62. printf("enter %d elements: ",size);
  63. for(int i=0;i<size;i++){
  64. scanf("%d",&value);
  65. add_elements(&list,value);
  66. }
  67. printArrayList(&list);
  68. int target;
  69. printf("target:");
  70. scanf("%d",&target);
  71. int index=binary(&list,target);
  72. if(index!=-1){
  73. printf("found in position %d",index+1);
  74.  
  75. }
  76. else{
  77. printf("not found");
  78. }
  79. free(list.data);
  80.  
  81. }
  82.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
capacity:enter 0 elements: ArrayList contents: 
target:not found