c++ - 如何生成用于测试快速排序最佳案例的数组?
问题描述
我想测试 quickSort 的时间复杂度,但我不知道如何生成数组来测试最佳情况。我的 quickSort 版本将数组的最后一个元素作为枢轴。
解决方案
假设所有数组元素都不同,那么如果您总是选择最小或最大元素,那么显然会遇到最坏的情况。这将为您提供最差的递归深度和最大的比较次数。
但在最坏的情况下,您还需要进行多次交换。检查当最后一个元素最小或数组中最大元素时,您的快速排序实现移动了多少元素。决定什么是最坏的。然后排列数组中的数字,使每个子数组中的最后一个元素始终是最坏的情况。
推荐阅读
- swift - Swift 错误消息:“'city' 类型的值没有成员 'id'
- vuelidate - Vuelidate "OR" 验证器示例
- html - Favicon 仅适用于浏览器
- kubernetes - 在配置私有 GKE 集群时了解 --master-ipv4-cidr
- sql - 用于根据其他列组使用自动编号填充新字段的 SQL 脚本
- python - 如何使用带有灰度图像的预训练神经网络?
- rtf - BIP > 从日期获取小时和分钟
- x86 - BIOS 和地址 0x07C00
- ios - 元素仅在滚动离子 ios 上消失
- google-play - 将应用重新提交到 Google Play