当前位置: 首页 > 后端技术 > PHP

算法排序

时间:2023-03-29 20:46:59 PHP

示例代码纯粹是为了印象,选择的目标语言有更方便的实现,并删除了一些假设检查。encoding:gbkNElement=20NRadix=4K=5arr=Array.new(NElement)do#初始化待排序数组,随机填充元素Array.new(NRadix)dorand(K)endenddefcounting_sort(a,b,r,k)=cArray.new(k+1,0)#下标数组a.eachdo|x|[i]+=c[i-1]#累计计数结束enda.reverse.eachdo|x|function(){//K线图http://www.kaifx.cn/mt4/kaifx...b[c[x[r]]-1]=x#放置元素c[x[r]]-=1#对同一个输入移动下标,这里是向前移动,所以基数排序中的多次排序需要对输入元素进行倒序endenddefradix_sort(a,r,k)b=Array.new(a.size,nil)(r-1).downto0做|ri|=arr.clone#输入数组b=radix_sort(a,NRadix,K)arr.eachdo|x|放x.inspectendputs'-'*10b.eachdo|x|放x.inspectEnd输出如下:----------Ruby----------[2,4,3,3][2,3,4,0][1,0,3,3][3,1,0,2][2,2,3,1][2,0,0,0][4,2,3,1][1,1,2,3][2,0,2,0][1,0,0,3][4,2,1,0][4,3,2,2][2,0,2,1][1,0,4,3][0,2,2,0][1,2,0,2][1,0,1,1][4,0,2,3][1,2,0,1][1,1,3,3][0,2,2,0][1,0,0,3][1,0,1,1][1,0,3,3][1,0,4,3][1,1,2,3][1,1,3,3][1,2,0,1][1,2,0,2][2,0,0,0][2,0,2,0][2,0,2,1][2,2,3,1][2,3,4,0][2,4,3,3][3,1,0,2][4,0,2,3][4,2,1,0][4,2,3,1][4,3,2,2]输出完成(消耗0秒)-正常终止