aboutsummaryrefslogtreecommitdiff
path: root/tests/sysy_lvX/bin_search.sy
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.001@gmail.com>2026-09-15 08:16:43 +0800
committerRichard Qin <richard.qin.001@gmail.com>2026-09-15 08:16:43 +0800
commit4022e5c95210631e4aceb08eaf9d9071aa5aefc4 (patch)
treea5922559836e45fb3459a3d070367912e1035b1a /tests/sysy_lvX/bin_search.sy
downloadrcc-master.tar.gz
rcc-master.tar.xz
Set up a git repoHEADmaster
Diffstat (limited to 'tests/sysy_lvX/bin_search.sy')
-rw-r--r--tests/sysy_lvX/bin_search.sy111
1 files changed, 111 insertions, 0 deletions
diff --git a/tests/sysy_lvX/bin_search.sy b/tests/sysy_lvX/bin_search.sy
new file mode 100644
index 0000000..efecd50
--- /dev/null
+++ b/tests/sysy_lvX/bin_search.sy
@@ -0,0 +1,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;
+} \ No newline at end of file