Skip to content

Commit 170a1cb

Browse files
committed
feat(sorting): new sortings algorithms
- InsertSorting - ShellSorting - SelectSorting
1 parent db41024 commit 170a1cb

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

sorting/insertsort.lua

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
--[[
2+
Lua implementation of insert sort
3+
4+
Author: Micael Machado Gomes (micaellgoms@gmail.com)
5+
--]]
6+
7+
-- @param unordered array
8+
function insertSort(array)
9+
print("Insert Sort:")
10+
for i = 1, #array do
11+
temp = array[i]
12+
j = i - 1
13+
while j > 0 and array[j] > temp do
14+
array[j+1] = array[j]
15+
j = j - 1
16+
end
17+
array[j + 1] = temp
18+
end
19+
end

sorting/selectsort.lua

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
--[[
3+
Lua implementation of select sort
4+
5+
Author: Micael Machado Gomes (micaellgoms@gmail.com)
6+
--]]
7+
8+
-- @param unordered array
9+
function selectSort(array)
10+
print("Select Sort:")
11+
for i in pairs(array) do
12+
min = i
13+
for j = i, #array do
14+
if array[j] < array[min] then
15+
min = j
16+
end
17+
end
18+
19+
array[min], array[i] = array[i], array[min]
20+
end
21+
end

sorting/shellsorting.lua

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
--[[
2+
Lua implementation of shell sort
3+
4+
Author: Micael Machado Gomes (micaellgoms@gmail.com)
5+
--]]
6+
7+
-- @param unordered array
8+
function shellSort(array)
9+
print("Shell Sort:")
10+
h = 1
11+
while h < #array do
12+
h = (3*h)+1
13+
end
14+
15+
repeat
16+
h = math.floor(h/3)
17+
for i = 1, #array do
18+
temp = array[i]
19+
j = i - h
20+
while j >= 1 and array[j] > temp do
21+
array[j+h] = array[j]
22+
j = j - h
23+
end
24+
array[j+h] = temp
25+
end
26+
until h <= 1
27+
end

0 commit comments

Comments
 (0)