This commit is contained in:
ubuntu
2026-03-26 15:33:47 +09:00
parent fff89a2d9b
commit 69253957ee
13 changed files with 357 additions and 0 deletions

View File

@@ -0,0 +1 @@
{"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\n title \"排序库的简洁性与性能对比\"\n x-axis \"低性能\" --> \"高性能\"\n y-axis \"复杂\" --> \"简洁\"\n quadrant-1 \"理想选择\"\n quadrant-2 \"需要优化\"\n quadrant-3 \"不推荐\"\n quadrant-4 \"性能优先\"\n \"Lodash sortBy\": [0.7, 0.4]\n \"Array.prototype.sort\": [0.6, 0.8]\n \"bubble-sort-js\": [0.2, 0.7]\n \"merge-sort-js\": [0.65, 0.45]\n \"timsort\": [0.85, 0.25]\n \"fast-sort\": [0.75, 0.35]\n \"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还是浏览器环境不影响核心实现。"}

1
docs/requirement.txt Normal file
View File

@@ -0,0 +1 @@
一个JS写的数字的快速排序程序无需UI尽量简单

View File

@@ -0,0 +1 @@
{"Implementation approach":"实现一个纯JavaScript的快速排序算法无需任何第三方依赖库。采用经典的分治策略选取基准元素pivot将数组分为小于、等于、大于基准的三个部分递归排序后合并。同时支持升序/降序参数处理边界情况空数组、单元素数组并通过console.log提供示例验证。代码结构简单仅需两个文件核心排序模块和入口示例文件。","File list":["index.js","quickSort.js"],"Data structures and interfaces":"\nclassDiagram\n class QuickSort {\n +quickSort(arr: number[], descending: boolean) number[]\n -partition(arr: number[], descending: boolean) object\n }\n class Main {\n +run() void\n }\n Main --> QuickSort : uses\n","Program call flow":"\nsequenceDiagram\n participant M as Main (index.js)\n participant QS as QuickSort (quickSort.js)\n\n M->>M: 定义测试数组 testArrays\n M->>QS: quickSort([], false)\n QS-->>M: 返回 []\n M->>M: console.log 输出空数组结果\n\n M->>QS: quickSort([42], false)\n QS-->>M: 返回 [42]\n M->>M: console.log 输出单元素结果\n\n M->>QS: quickSort([3,6,8,10,1,2,1], false)\n QS->>QS: 选取 pivot = arr[middle]\n QS->>QS: 分区为 left, middle, right\n QS->>QS: quickSort(left, false) 递归\n QS->>QS: quickSort(right, false) 递归\n QS-->>M: 返回升序排序结果\n M->>M: console.log 输出升序结果\n\n M->>QS: quickSort([3,6,8,10,1,2,1], true)\n QS->>QS: 选取 pivot = arr[middle]\n QS->>QS: 分区为 left(>pivot), middle, right(<pivot)\n QS->>QS: quickSort(left, true) 递归\n QS->>QS: quickSort(right, true) 递归\n QS-->>M: 返回降序排序结果\n M->>M: console.log 输出降序结果\n\n M->>QS: quickSort([1,2,3,4,5], false)\n QS-->>M: 返回已排序数组\n M->>M: console.log 输出已排序数组结果\n","Anything UNCLEAR":"1) 降序排序参数已作为可选功能P2纳入实现默认为升序2) 非数字元素过滤未在需求中明确要求本实现假设输入均为数字数组3) 运行环境兼容Node.js和浏览器不影响核心逻辑。"}

View File

@@ -0,0 +1 @@
{"Required packages":["No third-party dependencies required"],"Required Other language third-party packages":["No third-party dependencies required"],"Logic Analysis":[["quickSort.js","包含 QuickSort 核心模块。实现 quickSort(arr: number[], descending: boolean) 公开方法:处理边界情况(空数组、单元素数组直接返回);选取中间元素作为 pivot调用内部 partition 私有逻辑将数组分为 left小于pivot、middle等于pivot、right大于pivot三部分根据 descending 参数决定升序或降序递归合并。无外部依赖,使用 module.exports 导出 quickSort 函数。"],["index.js","包含 Main 入口模块。实现 run() 函数:从 quickSort.js 导入 quickSortrequire('./quickSort'));定义多组测试数组 testArrays包括空数组、单元素数组、普通乱序数组、已排序数组依次调用 quickSort 进行升序和降序排序,并通过 console.log 输出验证结果。依赖 quickSort.js需在 quickSort.js 完成后实现。"]],"Task list":["quickSort.js","index.js"],"Full API spec":"","Shared Knowledge":"`quickSort.js` 是项目核心模块,导出唯一公共函数 `quickSort(arr, descending)`。参数说明:`arr` 为待排序的数字数组,`descending` 为布尔值(默认 false 表示升序true 表示降序)。返回值为排序后的新数组,不修改原数组。边界情况处理:空数组和单元素数组直接返回原数组。`index.js` 通过 `require('./quickSort')` 引入该函数并执行示例验证。","Anything UNCLEAR":"1) 降序排序参数 `descending` 默认值为 false升序调用时可选传入 true 实现降序已明确纳入实现2) 本实现假设输入均为数字数组不处理非数字元素过滤若后续有混合类型输入需求需额外扩展3) 代码兼容 Node.js 运行环境(使用 CommonJS module.exports/require同时核心逻辑也可在浏览器环境中使用。"}