Ruby实现插入排序算法及进阶的二路插入排序代码示例(ruby 数组操作)满满干货

随心笔谈12个月前发布 admin
92 0


def two_way_sort data
first,final=0,0
temp=[]
temp[0]=data[0]
result=[]
len=data.length

for i in 1..(len-1)
if data[i]>=temp[final]
final +=1
temp[final]=data[i]
elsif data[i]<=temp[first]
first=(first -1 + len)%len
temp[first]=data[i]
else
if data[i]<temp[0]
low=first
high=len -1

while low <=high do
m=(low + high)>>1
if data[i]>temp[m]
low=m + 1
else
high=m -1
end
end

j=first – 1
first -=1
while j < high do
temp[j]=temp[j+1]
j +=1
end

temp[high]=data[i]
else
low=0
high=final

while low <=high do
m=(low + high)>>1

if data[i]>=temp[m]
low=m + 1
else
high=m – 1
end
end

j=final + 1
final +=1

while j > low do
temp[j]=temp[j-1]
j -=1
end

temp[low]=data[i]
end
end
p temp
end

i=0
for j in first..(len – 1)
result[i]=temp[j]
i +=1
end

for j in 0..final
result[i]=temp[j]
i +=1
end

return result
end

data=[4,1,5,6,7,2,9,3,8].shuffle

p data

result=two_way_sort data

p result

© 版权声明

相关文章