diff options
| author | Richard Qin <richard.qin.001@gmail.com> | 2026-09-15 08:16:43 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.001@gmail.com> | 2026-09-15 08:16:43 +0800 |
| commit | 4022e5c95210631e4aceb08eaf9d9071aa5aefc4 (patch) | |
| tree | a5922559836e45fb3459a3d070367912e1035b1a /tests/upload/bin_search.sy | |
| download | rcc-4022e5c95210631e4aceb08eaf9d9071aa5aefc4.tar.gz rcc-4022e5c95210631e4aceb08eaf9d9071aa5aefc4.tar.xz | |
Diffstat (limited to 'tests/upload/bin_search.sy')
| -rw-r--r-- | tests/upload/bin_search.sy | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/tests/upload/bin_search.sy b/tests/upload/bin_search.sy new file mode 100644 index 0000000..eeb1588 --- /dev/null +++ b/tests/upload/bin_search.sy @@ -0,0 +1,110 @@ +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(){ + 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; +}
\ No newline at end of file |
