|
马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 yuzhiboqianyuan 于 2024-9-4 18:29 编辑
问了下GPT关于数组快排算法的伪代码,然后翻译成TC的代码。
没啥技术含量,仅供娱乐。
- 功能 按钮_点击()
- //这里添加你要执行的代码
- //开始验证
- var tempArr = array(10, 7, 8, 9, 1, 5)
- traceprint(tempArr)
- quickSort(tempArr, 0, arraysize(tempArr)-1)
- traceprint(tempArr)
- 结束
复制代码- //数组快排算法
- function quickSort(&arr, low, high)//对arr数组进行基于value的快速排序,外部调用时,low为0,high为数组大小-1
- var pi
- if(low < high)
- //pi 是分区索引,array[pi]已经在最终位置
- pi = partition(arr, low, high)
- //分别对基准值作为两边的子数组进行递归排序
- quickSort(arr, low, pi - 1)
- quickSort(arr, pi + 1, high)
- end
- end
- function partition(&arr, low, high)
- //选择最右侧的元素作为基准值
- var pivotVaule, pivotKey
- arraygetat(arr, high, pivotVaule, pivotKey)
- //i是小于基准值的元素的位置索引
- var i = low - 1
- for(var j = low; j <= high - 1; j++)
- var value, key
- arraygetat(arr, j, value, key)
- if(value <= pivotVaule)
- //增加i
- i++
- //交换array和array[j]
- ArrSwapEle(arr, i, j)
- end
- end
- ArrSwapEle(arr, i + 1, high)
- return i + 1
- end
- //数组元素交换
- function ArrSwapEle(&arr, firstPos, secondPos)//pos为数组索引,从0开始,直接操作原数组,将两个位置的索引元素进行交换
- //将firstPos和secondPos两个位置的元素进行交换
- if(arraysize(arr) < 2)
- //数组元素数量不足,无法交换
- return
- elseif(firstPos == secondPos)
- //如果两个位置相等的话,直接返回
- return
- elseif(firstPos < 0)
- //位置非法,直接返回
- return
- elseif(secondPos < 0)
- //位置非法,直接返回
- return
- elseif(firstPos > arraysize(arr))
- //位置非法,直接返回
- return
- elseif(secondPos > arraysize(arr))
- //位置非法,直接返回
- return
- elseif(firstPos > secondPos)
- //交换firstPos和secondPos的值
- var tempPos = firstPos
- firstPos = secondPos
- secondPos = tempPos
- end
- var firstPosValue, firstPosKey, secondPosValue, secondPosKey
- arraygetat(arr, firstPos, firstPosValue, firstPosKey)
- arraygetat(arr, secondPos, secondPosValue, secondPosKey)
- arraydeletepos(arr, firstPos)
- arraydeletepos(arr, secondPos - 1)
- arrayadd(arr, secondPosValue, secondPosKey, firstPos)
- arrayadd(arr, firstPosValue, firstPosKey, secondPos)
- end
复制代码
20240904更新,1、才发现之前提交的代码没有复制全,现在给补上了。2、快速将 D:\Program Files\Todesk\ToDesk.exe 这种全路径后面的文件名替换成 config.ini,两种方式任君选择。
- 变量 窗口程序全路径 = 窗口获取路径(窗口句柄)
- traceprint(窗口程序全路径)
- //替换文件名方式1
- var 配置文件全路径 = 正则表达式替换(窗口程序全路径, "(?<=\\\\)[^\\\\]*\\.?[^\\\\]*[ DISCUZ_CODE_1 ]quot;, "config.ini") //把后面的文件名用正则匹配替换成配置文件名称
- traceprint(配置文件全路径)
- //替换文件名方式2
- var 配置文件全路径2 = 字符串截取左侧(窗口程序全路径, 字符串长度(窗口程序全路径) - 字符串查找(字符串倒序(窗口程序全路径), "\")) &"config.ini"
- traceprint(配置文件全路径2)
- var 配置文件内容 = 文件读配置("ConfigInfo", "Resolution", 配置文件全路径)
- traceprint("配置文件内容: " & 配置文件内容)
复制代码
输出>>"D:\Program Files\Todesk\ToDesk.exe"
输出>>"D:\Program Files\Todesk\config.ini"
输出>>"D:\Program Files\Todesk\config.ini"
输出>>"配置文件内容: 1920x1080"
|
|