June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -0,0 +1,13 @@
|
|||
(defn swap [v x y]
|
||||
(assoc! v y (v x) x (v y)))
|
||||
|
||||
(defn stooge-sort
|
||||
([v] (persistent! (stooge-sort (transient v) 0 (dec (count v)))))
|
||||
([v i j]
|
||||
(if (> (v i) (v j)) (swap v i j) v)
|
||||
(if (> (- j i) 1)
|
||||
(let [t (int (Math/floor (/ (inc (- j i)) 3)))]
|
||||
(stooge-sort v i (- j t))
|
||||
(stooge-sort v (+ i t) j)
|
||||
(stooge-sort v i (- j t))))
|
||||
v))
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
import extensions.
|
||||
import system'routines.
|
||||
|
||||
extension $op
|
||||
{
|
||||
stoogeSort
|
||||
= self stoogeSort(0, self length - 1).
|
||||
|
||||
stoogeSort(IntNumber i, IntNumber j)
|
||||
[
|
||||
if(self[j]<self[i])
|
||||
[
|
||||
self exchange(i,j)
|
||||
].
|
||||
if (j - i > 1)
|
||||
[
|
||||
int t := (j - i + 1) / 3.
|
||||
self stoogeSort(i,j-t).
|
||||
self stoogeSort(i+t,j).
|
||||
self stoogeSort(i,j-t).
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
program =
|
||||
[
|
||||
var list := 0 to:15 repeat(:n)(randomGenerator eval(20)); toArray.
|
||||
|
||||
console printLine("before:", list).
|
||||
console printLine("after:", list stoogeSort).
|
||||
].
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
object StoogeSort extends App {
|
||||
def stoogeSort(a: Array[Int], i: Int, j: Int) {
|
||||
if (a(j) < a(i)) {
|
||||
val temp = a(j)
|
||||
a(j) = a(i)
|
||||
a(i) = temp
|
||||
}
|
||||
if (j - i > 1) {
|
||||
val t = (j - i + 1) / 3
|
||||
stoogeSort(a, i, j - t)
|
||||
stoogeSort(a, i + t, j)
|
||||
stoogeSort(a, i, j - t)
|
||||
}
|
||||
}
|
||||
|
||||
val a = Array(100, 2, 56, 200, -52, 3, 99, 33, 177, -199)
|
||||
println(s"Original : ${a.mkString(", ")}")
|
||||
stoogeSort(a, 0, a.length - 1)
|
||||
println(s"Sorted : ${a.mkString(", ")}")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue