aboutsummaryrefslogtreecommitdiff
path: root/tests/sysy_lvX/bin_search.sy
blob: efecd509ea4819d860ab88305a0680db86f01802 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
void QuickSort(int arr[], int low, int high)
{
    if (low < high)
    {
        int i = low;
        int j = high;
        int k = arr[low];
        while (i < j)
        {
            while(i < j && arr[j] >= k)    
            {
                j=j-1;
            }
            if(i < j)
            {
                arr[i] = arr[j];
                i=i+1;
            }
            while(i < j && arr[i] < k)      
            {
                i=i+1;
            }
            if(i < j)
            {
                arr[j] = arr[i];
                j=j-1;
            }
        }
        arr[i] = k;
        QuickSort(arr, low, i - 1); 
        QuickSort(arr, i + 1, high);
    }
}



int find(int n,int a[],int l)
{
  int low=0;
  int high=l-1;
  int middle=0;
  while(low<=high)
  {
    middle=(low+high)/2;
    if(n==a[middle])
    {
      return middle;
    }
    else
    {
      if(n>a[middle])
        low=middle+1;
      else
        high=middle-1;
    } 
  }
  return -1;
}

int fun(int arr[], int start, int end, int val)
{
    int mid;
    mid = (start + end) / 2;

    if (arr[mid] == val)
        return mid;
    if (start < end)
    {
        if (arr[mid] > val)
            return fun(arr, start, mid, val);
        else
            return fun(arr, mid + 1, end, val);
    }
    else
        return -1;
}

int main(){
  return 0;
  // int a[23]={2,3,5,6,7,8,9,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60};
  // int b[100];
  // int l1=23;
  // int i=0,n;
// 
  // int l2=getarray(b);
  // QuickSort(b,0,l2-1);
  // putarray(l2,b);
  // putch(10);
  // int op=getint();
  // while(op!=-1){
  //   n=getint();
  //   if(op==0){
  //     int x=find(n,a,l1);
  //     int y=fun(a,0,l1-1,n);
  //     if(x!=y){
  //       return -1;
  //     }
  //     putint(x);
  //   }else{
  //     int x=find(n,b,l2);
  //     int y=fun(b,0,l2-1,n);
  //     if(x!=y){
  //       return -1;
  //     }
  //     putint(x);
  //   }
  //   putch(10);
  //   op=getint();
  // }
  // return 0;
}