From a7c3cfd28e78716568fae5a65c2fb254fae90c36 Mon Sep 17 00:00:00 2001 From: ml92c58js <514742690@qq.com> Date: Sun, 25 Jun 2023 22:08:35 +0800 Subject: [PATCH] Update zs.cpp --- zs.cpp | 88 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/zs.cpp b/zs.cpp index a77ecb7..afae4ef 100644 --- a/zs.cpp +++ b/zs.cpp @@ -1,44 +1,44 @@ -#include -//求解结果表示 -int num; //全局变量,存放众数 -int maxcnt = 0; //全局变量,存放重数 -void split(int a[], int low, int high, int& mid, int& left, int& right) -//以a[low..high]中间的元素为界限,确定为等于a[mid]元素的左、右位置left和right -{ - mid = (low + high) / 2; - for (left = low; left <= high; left++) - if (a[left] == a[mid]) - break; - for (right = left + 1; right <= high; right++) - if (a[right] != a[mid]) - break; - right--; -} -void Getmaxcnt(int a[], int low, int high) -{ - if (low <= high) //a[low..high]序列至少有1个元素 - { - int mid, left, right; - split(a, low, high, mid, left, right); - int cnt = right - left + 1; //求出a[mid]元素的重数 - if (cnt > maxcnt) //找到更大的重数 - { - num = a[mid]; - maxcnt = cnt; - } - Getmaxcnt(a, low, left - 1); //左序列递归处理 - Getmaxcnt(a, right + 1, high); //右序列递归处理 - } -} -int main() -{ - int a[] = { 1,2,2,2,3,3,5,6,6,6,6 }; - int n = sizeof(a) / sizeof(a[0]); - printf("求解结果\n"); - printf(" 递增序列: "); - for (int i = 0; i < n; i++) - printf("%d ", a[i]); - printf("\n"); - Getmaxcnt(a, 0, n - 1); - printf(" 众数: %d, 重数: %d\n", num, maxcnt); -} +#include +//求解结果表示 +int num; //全局变量,存放众数 +int maxcnt = 0; //全局变量,存放重数 +void split(int a[], int low, int high, int& mid, int& left, int& right) +//以a[low..high]中间的元素为界限,确定为等于a[mid]元素的左、右位置left和right +{ + mid = (low + high) / 2; + for (left = low; left <= high; left++) + if (a[left] == a[mid]) + break; + for (right = left + 1; right <= high; right++) + if (a[right] != a[mid]) + break; + right--; +} +void Getmaxcnt(int a[], int low, int high) +{ + if (low <= high) //a[low..high]序列至少有1个元素 + { + int mid, left, right; + split(a, low, high, mid, left, right); + int cnt = right - left + 1; //求出a[mid]元素的重数 + if (cnt > maxcnt) //找到更大的重数 + { + num = a[mid]; + maxcnt = cnt; + } + Getmaxcnt(a, low, left - 1); //左序列递归处理 + Getmaxcnt(a, right + 1, high); //右序列递归处理 + } +} +int main() +{ + int a[] = { 1,2,2,2,3,3,5,6,6,6,6 }; + int n = sizeof(a) / sizeof(a[0]); + printf("求解结果\n"); + printf(" 递增序列: "); + for (int i = 0; i < n; i++) + printf("%d ", a[i]); + printf("\n"); + Getmaxcnt(a, 0, n - 1); + printf(" 众数: %d, 重数: %d\n", num, maxcnt); +} \ No newline at end of file