On Mar 12, 1:56 pm, 7stud -- <bbxx789_0... / yahoo.com> wrote:
> Ma Fe wrote:
> > well I dont know where in array i have .txt files but its sure that
> > there is just one and i want to put it at first place of array...

> This is faster than all the solutions posted so far:
>
> a = ['one.jpg', 'two.kzv', 'a.txt', 'a.az']
> new_a = [1]
>
> for elmt in a
>   if elmt[-3] == ?t
>     new_a[0] = elmt
>   else
>     new_a << elmt
>   end
> end
>
> --output:--
> ["a.txt", "one.jpg", "two.kzv", "a.az"]

Iters = 99_000
a, new_a = nil

t = Time.now
Iters.times{
a = %w(one.jpg two.kzv a.az b.mp3 c.png a.txt d.tif e.gif f.mp4
g.pdf)
new_a = [1]
for elmt in a
if elmt[-4,4] == '.txt'
new_a[0] = elmt
else
new_a << elmt
end
end
}
p Time.now - t

t = Time.now
Iters.times{
a = %w(one.jpg two.kzv a.az b.mp3 c.png a.txt d.tif e.gif f.mp4
g.pdf)
1.upto(a.size-1){|i|
if a[i][-4,4] == '.txt'
a[0],a[i] = a[i],a[0]
break
end
}
}
p Time.now - t

--output--
4.422
3.359

Lua:

when = os.clock()

for _ = 1,99000 do
a = {'one.jpg','two.uzv','a.az','b.mp3','c.png','a.txt',
'd.tif','e.gif','f.mp4','g.pdf'}
for i = 2, #a do
if string.sub( a[i], -4 ) == '.txt' then
a[1],a[i] = a[i],a[1]
end
end
end

print( os.clock() - when )

--output--
0.968