马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 剑仙十号 于 2018-5-8 10:06 编辑
【变量和数组】快速排序。
关键词:tc简单开发,快速排序。
var 线程ID, arr
功能 执行()
var arrstr, 元素个数, 最大下标
arrstr = "array(8,6,2,7,1,9,5,4,10,3)"
arr = 字符串转数组(arrstr)
元素个数 = 数组大小(arr) //数组大小() 的返回值是元素个数.
最大下标 = 元素个数 - 1 //数组的最大下标。
//最小下标是从0开始数的,元素个数是从1开始数的。 所以最大下标,永远比元素个数 小1。
快速排序(0, 最大下标)
for(var i = 0; i < 元素个数; i++)
traceprint(arr)
end
数组清空(arr) //数据量大的话,全局数组会占很大的内存空间。所以使用_数组清空()
结束
//
功能 快速排序(L, B)
if(L > B)
return 0
end
//
var i, j, key
i = L
j = B
key = int(arr[L])
while(j > i)
while(int(arr[j]) >= key && j > i)
j = j - 1
end
while(int(arr) <= key && j > i)
i = i + 1
end
if(j > i)
var 周转箱 = arr
arr = arr[j]
arr[j] = 周转箱
end
end
arr[L] = arr
arr = key
快速排序(L, i - 1) //递归算法,调用函数自身.
快速排序(i + 1, B) //递归算法,调用函数自身.
结束
//
功能 启动_热键()
var bool = 线程获取状态(线程ID)
if(bool == false)
线程ID = 线程开启("执行", "")
end
结束
功能 终止_热键()
线程关闭(线程ID)
结束
代码环境:tc7.0版
快速排序采用分治的办法,几百,几千,几万个数据,快速排序的速度是冒泡的几倍.
如果是几十个数据,冒泡排序就可以胜任。
上一篇:【变量和数组】冒泡排序。
http://bbs.tyuyan.net/forum.php?mod=viewthread&tid=70422&mobile=no
|