CS50 多种气味测试关于如何开发这个 void print_winner(void) 函数的最佳实践是什么

问题描述

查看 multiple.c 的分发代码让我相信空白 (void)print_winner(void) 函数可以通过几个循环来解决。但是在实践中使用归并排序来解决这个问题会更好吗?更具体地说,它要求我制作一个新的排序后的投票总数数组,其中候选人将投票从最小投票到最大投票,然后我只是从数组中打印出最大的投票获取者?

在不透露答案的情况下,有经验的开发人员能否告诉我他们将具体使用哪种逻辑?即:你想使用递归吗?这里的最佳做法是什么?为什么?

shared_ptr

请原谅链接。我的帐户还不能嵌入图片,我是这种论坛的新手。

解决方法

在这种情况下,由于您已经拥有一组候选人,因此您只需循环一次即可找到获得最多选票的候选人。无需创建新数组,只需在 O(n) 时间复杂度下进行即可。假设候选人 [0] 的票数最多,如果另一个候选人有更多票,则在循环时更新获胜者。您还可以添加一个检查以查看是否有人拥有相同数量的选票,在这种情况下,您可能需要另一个数组来保存“当前最大”候选人。如果有新的最大值,请更新它。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...