Files
metagpt-JS-UI-20260326/resources/prd/20260326152929.md
2026-03-26 15:33:47 +09:00

2.9 KiB
Raw Permalink Blame History

Language

zh_cn

Programming Language

JavaScript

Original Requirements

一个JS写的数字的快速排序程序无需UI尽量简单

Project Name

quick_sort_js

Product Goals

  • 实现简洁高效的快速排序算法
  • 代码易于理解和维护
  • 确保排序结果的正确性和性能

User Stories

  • 作为开发者,我希望能够对任意数字数组进行快速排序
  • 作为开发者,我希望排序函数能够处理边界情况,如空数组或单元素数组
  • 作为开发者,我希望代码简洁易读,方便直接引用或修改
  • 作为开发者,我希望能够通过控制台输出验证排序结果

Competitive Analysis

  • Lodash sortBy: 功能强大但库体积较大,适合复杂项目
  • Array.prototype.sort: 原生方法,简单易用,但排序算法不固定
  • bubble-sort-js: 冒泡排序实现,简单但性能较差
  • merge-sort-js: 归并排序实现,稳定但代码相对复杂
  • timsort: 高性能混合排序,功能强大但实现复杂
  • fast-sort: 功能丰富,支持多种排序方式,但依赖较多
  • 简单手写快速排序: 轻量、无依赖,代码简洁,适合学习和小型项目

Competitive Quadrant Chart

quadrantChart title "排序库的简洁性与性能对比" x-axis "低性能" --> "高性能" y-axis "复杂" --> "简洁" quadrant-1 "理想选择" quadrant-2 "需要优化" quadrant-3 "不推荐" quadrant-4 "性能优先" "Lodash sortBy": [0.7, 0.4] "Array.prototype.sort": [0.6, 0.8] "bubble-sort-js": [0.2, 0.7] "merge-sort-js": [0.65, 0.45] "timsort": [0.85, 0.25] "fast-sort": [0.75, 0.35] "Our Target Product": [0.75, 0.85]

Requirement Analysis

该项目要求使用JavaScript实现一个快速排序算法核心需求是对数字数组进行排序。无需任何UI界面代码应尽量简单明了。快速排序是一种高效的分治排序算法平均时间复杂度为O(n log n)。实现时需考虑:选取基准元素、分区操作、递归排序子数组,同时需处理空数组和单元素等边界情况。

Requirement Pool

  • ['P0', '实现核心快速排序函数,能够对数字数组进行升序排序']
  • ['P0', '处理边界情况:空数组、单元素数组、已排序数组']
  • ['P1', '在代码中提供示例调用通过console.log输出排序结果以便验证']
  • ['P1', '代码添加必要注释,说明算法步骤和逻辑']
  • ['P2', '支持可选的降序排序参数']

UI Design draft

无UI设计需求。程序仅包含纯JavaScript逻辑代码通过Node.js或浏览器控制台运行使用console.log输出排序前后的数组结果进行验证。

Anything UNCLEAR

目前需求较为明确。可进一步确认的点1) 是否需要支持降序排序2) 是否需要处理非数字元素的过滤3) 运行环境是Node.js还是浏览器环境不影响核心实现