aboutsummaryrefslogtreecommitdiff
path: root/sort.lua
diff options
context:
space:
mode:
Diffstat (limited to 'sort.lua')
-rw-r--r--sort.lua56
1 files changed, 56 insertions, 0 deletions
diff --git a/sort.lua b/sort.lua
new file mode 100644
index 00000000..f749c122
--- /dev/null
+++ b/sort.lua
@@ -0,0 +1,56 @@
1$debug
2
3function quicksort(r,s)
4 if s<=r then return end -- caso basico da recursao
5 local v=x[r]
6 local i=r
7 local j=s+1
8 i=i+1; while x[i]<v do i=i+1 end
9 j=j-1; while x[j]>v do j=j-1 end
10 x[i],x[j]=x[j],x[i]
11 while j>i do -- separacao
12 i=i+1; while x[i]<v do i=i+1 end
13 j=j-1; while x[j]>v do j=j-1 end
14 x[i],x[j]=x[j],x[i]
15 end
16 x[i],x[j]=x[j],x[i] -- undo last swap
17 x[j],x[r]=x[r],x[j]
18 quicksort(r,j-1) -- recursao
19 quicksort(j+1,s)
20end
21
22function sort(a,n) -- selection sort
23 local i=1
24 while i<=n do
25 local m=i
26 local j=i+1
27 while j<=n do
28 if a[j]<a[m] then m=j end
29 j=j+1
30 end
31 a[i],a[m]=a[m],a[i] -- swap a[i] and a[m]
32 i=i+1
33 end
34end
35
36function main()
37 x=@()
38 n=-1
39 n=n+1; x[n]="a"
40 n=n+1; x[n]="waldemar"
41 n=n+1; x[n]="luiz"
42 n=n+1; x[n]="lula"
43 n=n+1; x[n]="peter"
44 n=n+1; x[n]="raquel"
45 n=n+1; x[n]="camilo"
46 n=n+1; x[n]="andre"
47 n=n+1; x[n]="marcelo"
48 n=n+1; x[n]="sedrez"
49 n=n+1; x[n]="z"
50-- quicksort(1,n-1)
51 print(x[0]..","..x[1]..","..x[2]..","..x[3]..","..x[4]..","..x[5]..","..x[6]..","..x[7]..","..x[8]..","..x[9]..","..x[10])
52 sort (x, n-1)
53 print(x[0]..","..x[1]..","..x[2]..","..x[3]..","..x[4]..","..x[5]..","..x[6]..","..x[7]..","..x[8]..","..x[9]..","..x[10])
54end
55
56