|
马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 yuzhiboqianyuan 于 2024-6-1 18:41 编辑
问了下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)
- 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
复制代码
|
|