Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,27 @@
|
|||
(defn- swap [a i j]
|
||||
(assoc a i (nth a j) j (nth a i)))
|
||||
|
||||
(defn- sift [a pred k l]
|
||||
(loop [a a x k y (inc (* 2 k))]
|
||||
(if (< (inc (* 2 x)) l)
|
||||
(let [ch (if (and (< y (dec l)) (pred (nth a y) (nth a (inc y))))
|
||||
(inc y)
|
||||
y)]
|
||||
(if (pred (nth a x) (nth a ch))
|
||||
(recur (swap a x ch) ch (inc (* 2 ch)))
|
||||
a))
|
||||
a)))
|
||||
|
||||
(defn- heapify[pred a len]
|
||||
(reduce (fn [c term] (sift (swap c term 0) pred 0 term))
|
||||
(reduce (fn [c i] (sift c pred i len))
|
||||
(vec a)
|
||||
(range (dec (int (/ len 2))) -1 -1))
|
||||
(range (dec len) 0 -1)))
|
||||
|
||||
(defn heap-sort
|
||||
([a pred]
|
||||
(let [len (count a)]
|
||||
(heapify pred a len)))
|
||||
([a]
|
||||
(heap-sort a <)))
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
user> (heapsort [1 2 4 6 2 3 6])
|
||||
[1 2 2 3 4 6 6]
|
||||
user> (heapsort [1 2 4 6 2 3 6] >)
|
||||
[6 6 4 3 2 2 1]
|
||||
user> (heapsort (list 1 2 4 6 2 3 6))
|
||||
[1 2 2 3 4 6 6]
|
||||
Loading…
Add table
Add a link
Reference in a new issue