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/sysy_lvX/064_sort_test7.sy | |
| download | rcc-4022e5c95210631e4aceb08eaf9d9071aa5aefc4.tar.gz rcc-4022e5c95210631e4aceb08eaf9d9071aa5aefc4.tar.xz | |
Diffstat (limited to 'tests/sysy_lvX/064_sort_test7.sy')
| -rw-r--r-- | tests/sysy_lvX/064_sort_test7.sy | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/tests/sysy_lvX/064_sort_test7.sy b/tests/sysy_lvX/064_sort_test7.sy new file mode 100644 index 0000000..b4bbd08 --- /dev/null +++ b/tests/sysy_lvX/064_sort_test7.sy @@ -0,0 +1,87 @@ +int n; +int Merge(int array[], int low, int middle, int high) +{ + int n1; + n1 = middle - low + 1; + int n2; + n2 = high - middle; + int L[10]; + int R[10]; + int i; + i = 0; + int j; + j = 0; + + while(i < n1){ + L[i] = array[i + low]; + i = i + 1; + } + while(j < n2){ + R[j] = array[j + middle +1]; + j = j + 1; + } + i = 0; + j = 0; + int k; + k = low; + while(i!=n1 && j!= n2) + { + if(L[i] < R[j] + 1){ + array[k] = L[i]; + k = k + 1; + i = i + 1; + } + else{ + array[k] = R[j]; + k = k + 1; + j = j + 1; + } + } + while(i < n1){ + array[k] = L[i]; + k = k + 1; + i = i + 1; + + } + while(j < n2){ + array[k] = R[j]; + k = k + 1; + j = j + 1; + } + return 0; +} + +int MergeSort(int array[], int p, int q) +{ + if(p < q) + { + int mid; + mid = (p+q)/2; + int tmp; + tmp = MergeSort(array, p, mid); + tmp = mid + 1; + tmp = MergeSort(array, tmp, q); + tmp = Merge(array,p, mid, q); + } + return 0; +} + +int main(){ + n = 10; + int a[10]; + a[0]=4;a[1]=3;a[2]=9;a[3]=2;a[4]=0; + a[5]=1;a[6]=6;a[7]=5;a[8]=7;a[9]=8; + int i; + i = 0; + int tmp; + tmp = n - 1; + i = MergeSort(a, i, tmp); + while (i < n) { + tmp = a[i]; + putint(tmp); + tmp = 10; + putch(tmp); + i = i + 1; + } + return 0; +} |
