https://www.bilibili.com/video/BV1944y1E7as/?vd_source=95702c8745c5d28582eab4405ef02eef
介绍了一个 算法 , 插入和归并混合排序的
f阀值 32. 小于32的成员用插入,然后两两合并起来归并排序
然后我写了主框架。
让豆包把插入排序,和归并排序的部分,补上
插入排序写的十分完美。然后让它改成更快的二分插入排序 也改出来了
子程序_插入排序3 参数_数组 整数型 参数_左 整数型 参数_右 整数型
变量名 类 型 静态 数组 备 注 n1 整数型 局变_临时 整数型 m1 整数型 局变_插入点 整数型
如果 ( 参数_左 ≥ 参数_右
) 返回 ( ) 调试输出 ( 子程序_输出指定数组成员 ( 参数_数组, 参数_左, 参数_右
) )
变量循环首 ( 参数_左 + 1, 参数_右, 1, n1
) 局变_临时 = 参数_数组
[ n1
] 局变_插入点 = -1
变量循环首 ( n1 - 1, 参数_左, -1, m1
) 如果 ( 参数_数组
[ m1
] > 局变_临时
) 参数_数组
[ m1 + 1
] = 参数_数组
[ m1
] 局变_插入点 = m1 + 1
跳出循环 ( ) 变量循环尾 ( ) 如果 ( 局变_插入点 = -1
) 局变_插入点 = 参数_左
参数_数组
[ 局变_插入点
] = 局变_临时
变量循环尾 ( ) 调试输出 ( 子程序_输出指定数组成员 ( 参数_数组, 参数_左, 参数_右
) )
豆包可以啊,插入排序的改版也能轻松实现 我想半天
直接输入残缺代码 他就补上了
它搞不清循环判断 和判断循环。有时候忘记循环判断尾()里加 真
然后让他补上 归并排序的代码。也整挺好,除了一点拷贝到IDE的错乱外,也能跑了
提示修改一些bug后,连主框架都改成看不懂的样子‘但是结果是没问题的
本来非常费脑子的事情 AI给解决了
用是没问题的,就是要理解代码和修改BUG就很难了
然后看看完整代码
窗口程序集名 保 留 保 留 备 注 窗口程序集_启动窗口 变量名 类 型 数组 备 注 程变_临时 整数型 0
变量名 类 型 静态 数组 备 注 aaa 整数型 0 bbb 整数型 0
调试模块_创建整数型数组_有重复 ( aaa, 10000000, 1, 100000
) bbb = aaa
计时器启动 ( ) 子程序_新排序 ( aaa
) 计时器结束 ( ) 计时器启动 ( ) 排序模块_归并排序 ( bbb
) 计时器结束 ( ) 调试输出 ( 调试模块_检查数组是否排序过 ( aaa,
真 ) )
调试输出 ( 调试模块_检查数组是否排序过 ( bbb,
真 ) )
结束 ( ) 变量名 类 型 静态 数组 备 注 局变_阀值 整数型 局变_数组个数 整数型 局变_间隔 整数型 局变_左 整数型 局变_右 整数型 局变_游标x首 整数型 局变_游标x尾 整数型 局变_游标y首 整数型 局变_游标y尾 整数型
局变_阀值 = 32
局变_数组个数 =
取数组成员数 ( 参数_数组
) 如果 ( 局变_数组个数 ≤ 1
) 返回 ( ) 如果 ( 局变_数组个数 < 局变_阀值
) 子程序_二分插入排序3 ( 参数_数组, 1, 局变_数组个数
) 返回 ( ) 重定义数组 ( 程变_临时, 假, 局变_数组个数
) 局变_左 = 1
局变_间隔 = 局变_阀值
循环判断首 ( ) 局变_右 = 局变_左 + 局变_间隔 - 1
如果 ( 局变_右 > 局变_数组个数
) 局变_右 = 局变_数组个数
如果 ( 局变_左 > 局变_右
) 跳出循环 ( ) 子程序_二分插入排序3 ( 参数_数组, 局变_左, 局变_右
) 局变_左 = 局变_右 + 1
如果 ( 局变_左 > 局变_数组个数
) 跳出循环 ( ) 循环判断尾 ( 真 ) 局变_间隔 = 局变_阀值
循环判断首 ( ) 局变_游标x首 = 1
循环判断首 ( ) 局变_游标x尾 = 局变_游标x首 + 局变_间隔 - 1
如果 ( 局变_游标x尾 > 局变_数组个数
) 局变_游标x尾 = 局变_数组个数
局变_游标y首 = 局变_游标x尾 + 1
如果 ( 局变_游标y首 > 局变_数组个数
) 跳出循环 ( ) 局变_游标y尾 = 局变_游标y首 + 局变_间隔 - 1
如果 ( 局变_游标y尾 > 局变_数组个数
) 局变_游标y尾 = 局变_数组个数
子程序_归并排序_正常 ( 参数_数组, 局变_游标x首, 局变_游标x尾, 局变_游标y首, 局变_游标y尾
) 局变_游标x首 = 局变_游标y尾 + 1
如果 ( 局变_游标x首 > 局变_数组个数
) 跳出循环 ( ) 循环判断尾 ( 真 ) 局变_间隔 = 局变_间隔 × 2
如果 ( 局变_间隔 > 局变_数组个数
) 跳出循环 ( ) 循环判断尾 ( 真 ) 子程序_二分插入排序3 参数_数组 整数型 参数_左 整数型 参数_右 整数型
变量名 类 型 静态 数组 备 注 n1 整数型 局变_临时 整数型 局变_左 整数型 局变_右 整数型 局变_中间 整数型 m1 整数型
如果 ( 参数_左 ≥ 参数_右
) 返回 ( ) 变量循环首 ( 参数_左 + 1, 参数_右, 1, n1
) 局变_临时 = 参数_数组
[ n1
] 局变_左 = 参数_左
局变_右 = n1 - 1
判断循环首 ( 局变_左 ≤ 局变_右
) 局变_中间 = 局变_左
( 局变_右 - 局变_左
) ÷ 2
如果 ( 参数_数组
[ 局变_中间
] > 局变_临时
) 局变_右 = 局变_中间 - 1
局变_左 = 局变_中间 + 1
判断循环尾 ( ) 变量循环首 ( n1 - 1, 局变_左, -1, m1
) 参数_数组
[ m1 + 1
] = 参数_数组
[ m1
] 变量循环尾 ( ) 参数_数组
[ 局变_左
] = 局变_临时
变量循环尾 ( ) 子程序_归并排序_正常 参数_数组 整数型 参数_游标x首 整数型 参数_游标x尾 整数型 参数_游标y首 整数型 参数_游标y尾 整数型
变量名 类 型 静态 数组 备 注 局变_i 整数型 局变_j 整数型 局变_k 整数型
如果 ( 参数_游标x首 > 参数_游标x尾
或 参数_游标y首 > 参数_游标y尾
) 返回 ( ) 变量循环首 ( 参数_游标x首, 参数_游标y尾, 1, 局变_i
) 程变_临时
[ 局变_i
] = 参数_数组
[ 局变_i
] 变量循环尾 ( ) 局变_i = 参数_游标x首
局变_j = 参数_游标y首
局变_k = 参数_游标x首
循环判断首 ( ) 如果 ( 局变_i > 参数_游标x尾
) 变量循环首 ( 局变_j, 参数_游标y尾, 1, 局变_j
) 参数_数组
[ 局变_k
] = 程变_临时
[ 局变_j
] 局变_k = 局变_k + 1
变量循环尾 ( ) 跳出循环 ( ) 如果 ( 局变_j > 参数_游标y尾
) 变量循环首 ( 局变_i, 参数_游标x尾, 1, 局变_i
) 参数_数组
[ 局变_k
] = 程变_临时
[ 局变_i
] 局变_k = 局变_k + 1
变量循环尾 ( ) 跳出循环 ( ) 如果 ( 程变_临时
[ 局变_i
] ≤ 程变_临时
[ 局变_j
] ) 参数_数组
[ 局变_k
] = 程变_临时
[ 局变_i
] 局变_i = 局变_i + 1
参数_数组
[ 局变_k
] = 程变_临时
[ 局变_j
] 局变_j = 局变_j + 1
局变_k = 局变_k + 1 循环判断尾 ( 真 )