summaryrefslogtreecommitdiff
path: root/base/QuickSort.vapor
diff options
context:
space:
mode:
authorbd-912 <bdunahu@colostate.edu>2024-04-26 15:50:38 -0600
committerbd-912 <bdunahu@colostate.edu>2024-04-26 15:50:38 -0600
commit1851f5e76018ec1df3b55dce6cc9a64c9497bf7a (patch)
tree30f629f7b137a494d4202487f4e22df2d9456481 /base/QuickSort.vapor
parent012298517078170762112abe2654dc69b2f146e1 (diff)
Rearrange directory structure
Diffstat (limited to 'base/QuickSort.vapor')
-rw-r--r--base/QuickSort.vapor399
1 files changed, 399 insertions, 0 deletions
diff --git a/base/QuickSort.vapor b/base/QuickSort.vapor
new file mode 100644
index 0000000..3fe3798
--- /dev/null
+++ b/base/QuickSort.vapor
@@ -0,0 +1,399 @@
+
+const vmt_QS
+ :QS.Start
+ :QS.Sort
+ :QS.Print
+ :QS.Init
+
+
+func Main()
+ t.0 = HeapAllocZ(12)
+ [t.0] = :vmt_QS
+ if t.0 goto :null1
+ Error("null pointer")
+ null1:
+ t.1 = [t.0]
+ t.1 = [t.1+0]
+ t.2 = call t.1(t.0 10)
+ PrintIntS(t.2)
+ ret
+
+func QS.Start(this sz)
+ t.0 = [this]
+ t.0 = [t.0+12]
+ aux01 = call t.0(this sz)
+ t.1 = [this]
+ t.1 = [t.1+8]
+ aux01 = call t.1(this)
+ PrintIntS(9999)
+ t.2 = [this+8]
+ aux01 = Sub(t.2 1)
+ t.3 = [this]
+ t.3 = [t.3+4]
+ aux01 = call t.3(this 0 aux01)
+ t.4 = [this]
+ t.4 = [t.4+8]
+ aux01 = call t.4(this)
+ ret 0
+
+func QS.Sort(this left right)
+ t = 0
+ t.0 = LtS(left right)
+ if0 t.0 goto :if1_else
+ t.1 = [this+4]
+ if t.1 goto :null2
+ Error("null pointer")
+ null2:
+ t.2 = [t.1]
+ t.2 = Lt(right t.2)
+ if t.2 goto :bounds1
+ Error("array index out of bounds")
+ bounds1:
+ t.2 = MulS(right 4)
+ t.2 = Add(t.2 t.1)
+ v = [t.2+4]
+ i = Sub(left 1)
+ j = right
+ cont01 = 1
+ while1_top:
+ if0 cont01 goto :while1_end
+ cont02 = 1
+ while2_top:
+ if0 cont02 goto :while2_end
+ i = Add(i 1)
+ t.3 = [this+4]
+ if t.3 goto :null3
+ Error("null pointer")
+ null3:
+ t.4 = [t.3]
+ t.4 = Lt(i t.4)
+ if t.4 goto :bounds2
+ Error("array index out of bounds")
+ bounds2:
+ t.4 = MulS(i 4)
+ t.4 = Add(t.4 t.3)
+ aux03 = [t.4+4]
+ t.5 = LtS(aux03 v)
+ t.6 = Sub(1 t.5)
+ if0 t.6 goto :if2_else
+ cont02 = 0
+ goto :if2_end
+ if2_else:
+ cont02 = 1
+ if2_end:
+ goto :while2_top
+ while2_end:
+ cont02 = 1
+ while3_top:
+ if0 cont02 goto :while3_end
+ j = Sub(j 1)
+ t.7 = [this+4]
+ if t.7 goto :null4
+ Error("null pointer")
+ null4:
+ t.8 = [t.7]
+ t.8 = Lt(j t.8)
+ if t.8 goto :bounds3
+ Error("array index out of bounds")
+ bounds3:
+ t.8 = MulS(j 4)
+ t.8 = Add(t.8 t.7)
+ aux03 = [t.8+4]
+ t.9 = LtS(v aux03)
+ t.10 = Sub(1 t.9)
+ if0 t.10 goto :if3_else
+ cont02 = 0
+ goto :if3_end
+ if3_else:
+ cont02 = 1
+ if3_end:
+ goto :while3_top
+ while3_end:
+ t.11 = [this+4]
+ if t.11 goto :null5
+ Error("null pointer")
+ null5:
+ t.12 = [t.11]
+ t.12 = Lt(i t.12)
+ if t.12 goto :bounds4
+ Error("array index out of bounds")
+ bounds4:
+ t.12 = MulS(i 4)
+ t.12 = Add(t.12 t.11)
+ t = [t.12+4]
+ t.13 = [this+4]
+ if t.13 goto :null6
+ Error("null pointer")
+ null6:
+ t.14 = [t.13]
+ t.14 = Lt(i t.14)
+ if t.14 goto :bounds5
+ Error("array index out of bounds")
+ bounds5:
+ t.14 = MulS(i 4)
+ t.14 = Add(t.14 t.13)
+ t.15 = [this+4]
+ if t.15 goto :null7
+ Error("null pointer")
+ null7:
+ t.16 = [t.15]
+ t.16 = Lt(j t.16)
+ if t.16 goto :bounds6
+ Error("array index out of bounds")
+ bounds6:
+ t.16 = MulS(j 4)
+ t.16 = Add(t.16 t.15)
+ t.17 = [t.16+4]
+ [t.14+4] = t.17
+ t.18 = [this+4]
+ if t.18 goto :null8
+ Error("null pointer")
+ null8:
+ t.19 = [t.18]
+ t.19 = Lt(j t.19)
+ if t.19 goto :bounds7
+ Error("array index out of bounds")
+ bounds7:
+ t.19 = MulS(j 4)
+ t.19 = Add(t.19 t.18)
+ [t.19+4] = t
+ t.20 = Add(i 1)
+ t.21 = LtS(j t.20)
+ if0 t.21 goto :if4_else
+ cont01 = 0
+ goto :if4_end
+ if4_else:
+ cont01 = 1
+ if4_end:
+ goto :while1_top
+ while1_end:
+ t.22 = [this+4]
+ if t.22 goto :null9
+ Error("null pointer")
+ null9:
+ t.23 = [t.22]
+ t.23 = Lt(j t.23)
+ if t.23 goto :bounds8
+ Error("array index out of bounds")
+ bounds8:
+ t.23 = MulS(j 4)
+ t.23 = Add(t.23 t.22)
+ t.24 = [this+4]
+ if t.24 goto :null10
+ Error("null pointer")
+ null10:
+ t.25 = [t.24]
+ t.25 = Lt(i t.25)
+ if t.25 goto :bounds9
+ Error("array index out of bounds")
+ bounds9:
+ t.25 = MulS(i 4)
+ t.25 = Add(t.25 t.24)
+ t.26 = [t.25+4]
+ [t.23+4] = t.26
+ t.27 = [this+4]
+ if t.27 goto :null11
+ Error("null pointer")
+ null11:
+ t.28 = [t.27]
+ t.28 = Lt(i t.28)
+ if t.28 goto :bounds10
+ Error("array index out of bounds")
+ bounds10:
+ t.28 = MulS(i 4)
+ t.28 = Add(t.28 t.27)
+ t.29 = [this+4]
+ if t.29 goto :null12
+ Error("null pointer")
+ null12:
+ t.30 = [t.29]
+ t.30 = Lt(right t.30)
+ if t.30 goto :bounds11
+ Error("array index out of bounds")
+ bounds11:
+ t.30 = MulS(right 4)
+ t.30 = Add(t.30 t.29)
+ t.31 = [t.30+4]
+ [t.28+4] = t.31
+ t.32 = [this+4]
+ if t.32 goto :null13
+ Error("null pointer")
+ null13:
+ t.33 = [t.32]
+ t.33 = Lt(right t.33)
+ if t.33 goto :bounds12
+ Error("array index out of bounds")
+ bounds12:
+ t.33 = MulS(right 4)
+ t.33 = Add(t.33 t.32)
+ [t.33+4] = t
+ t.34 = [this]
+ t.34 = [t.34+4]
+ t.35 = Sub(i 1)
+ nt = call t.34(this left t.35)
+ t.36 = [this]
+ t.36 = [t.36+4]
+ t.37 = Add(i 1)
+ nt = call t.36(this t.37 right)
+ goto :if1_end
+ if1_else:
+ nt = 0
+ if1_end:
+ ret 0
+
+func QS.Print(this)
+ j = 0
+ while4_top:
+ t.0 = [this+8]
+ t.1 = LtS(j t.0)
+ if0 t.1 goto :while4_end
+ t.2 = [this+4]
+ if t.2 goto :null14
+ Error("null pointer")
+ null14:
+ t.3 = [t.2]
+ t.3 = Lt(j t.3)
+ if t.3 goto :bounds13
+ Error("array index out of bounds")
+ bounds13:
+ t.3 = MulS(j 4)
+ t.3 = Add(t.3 t.2)
+ t.4 = [t.3+4]
+ PrintIntS(t.4)
+ j = Add(j 1)
+ goto :while4_top
+ while4_end:
+ ret 0
+
+func QS.Init(this sz)
+ [this+8] = sz
+ t.0 = call :AllocArray(sz)
+ [this+4] = t.0
+ t.1 = [this+4]
+ if t.1 goto :null15
+ Error("null pointer")
+ null15:
+ t.2 = [t.1]
+ t.2 = Lt(0 t.2)
+ if t.2 goto :bounds14
+ Error("array index out of bounds")
+ bounds14:
+ t.2 = MulS(0 4)
+ t.2 = Add(t.2 t.1)
+ [t.2+4] = 20
+ t.3 = [this+4]
+ if t.3 goto :null16
+ Error("null pointer")
+ null16:
+ t.4 = [t.3]
+ t.4 = Lt(1 t.4)
+ if t.4 goto :bounds15
+ Error("array index out of bounds")
+ bounds15:
+ t.4 = MulS(1 4)
+ t.4 = Add(t.4 t.3)
+ [t.4+4] = 7
+ t.5 = [this+4]
+ if t.5 goto :null17
+ Error("null pointer")
+ null17:
+ t.6 = [t.5]
+ t.6 = Lt(2 t.6)
+ if t.6 goto :bounds16
+ Error("array index out of bounds")
+ bounds16:
+ t.6 = MulS(2 4)
+ t.6 = Add(t.6 t.5)
+ [t.6+4] = 12
+ t.7 = [this+4]
+ if t.7 goto :null18
+ Error("null pointer")
+ null18:
+ t.8 = [t.7]
+ t.8 = Lt(3 t.8)
+ if t.8 goto :bounds17
+ Error("array index out of bounds")
+ bounds17:
+ t.8 = MulS(3 4)
+ t.8 = Add(t.8 t.7)
+ [t.8+4] = 18
+ t.9 = [this+4]
+ if t.9 goto :null19
+ Error("null pointer")
+ null19:
+ t.10 = [t.9]
+ t.10 = Lt(4 t.10)
+ if t.10 goto :bounds18
+ Error("array index out of bounds")
+ bounds18:
+ t.10 = MulS(4 4)
+ t.10 = Add(t.10 t.9)
+ [t.10+4] = 2
+ t.11 = [this+4]
+ if t.11 goto :null20
+ Error("null pointer")
+ null20:
+ t.12 = [t.11]
+ t.12 = Lt(5 t.12)
+ if t.12 goto :bounds19
+ Error("array index out of bounds")
+ bounds19:
+ t.12 = MulS(5 4)
+ t.12 = Add(t.12 t.11)
+ [t.12+4] = 11
+ t.13 = [this+4]
+ if t.13 goto :null21
+ Error("null pointer")
+ null21:
+ t.14 = [t.13]
+ t.14 = Lt(6 t.14)
+ if t.14 goto :bounds20
+ Error("array index out of bounds")
+ bounds20:
+ t.14 = MulS(6 4)
+ t.14 = Add(t.14 t.13)
+ [t.14+4] = 6
+ t.15 = [this+4]
+ if t.15 goto :null22
+ Error("null pointer")
+ null22:
+ t.16 = [t.15]
+ t.16 = Lt(7 t.16)
+ if t.16 goto :bounds21
+ Error("array index out of bounds")
+ bounds21:
+ t.16 = MulS(7 4)
+ t.16 = Add(t.16 t.15)
+ [t.16+4] = 9
+ t.17 = [this+4]
+ if t.17 goto :null23
+ Error("null pointer")
+ null23:
+ t.18 = [t.17]
+ t.18 = Lt(8 t.18)
+ if t.18 goto :bounds22
+ Error("array index out of bounds")
+ bounds22:
+ t.18 = MulS(8 4)
+ t.18 = Add(t.18 t.17)
+ [t.18+4] = 19
+ t.19 = [this+4]
+ if t.19 goto :null24
+ Error("null pointer")
+ null24:
+ t.20 = [t.19]
+ t.20 = Lt(9 t.20)
+ if t.20 goto :bounds23
+ Error("array index out of bounds")
+ bounds23:
+ t.20 = MulS(9 4)
+ t.20 = Add(t.20 t.19)
+ [t.20+4] = 5
+ ret 0
+
+func AllocArray(size)
+ bytes = MulS(size 4)
+ bytes = Add(bytes 4)
+ v = HeapAllocZ(bytes)
+ [v] = size
+ ret v