Data update
This commit is contained in:
parent
29a5eea0d4
commit
5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions
|
|
@ -0,0 +1,24 @@
|
|||
(defgeneric nsrt (sequence predicate))
|
||||
|
||||
(defmethod nsrt ((sequence sequence) predicate)
|
||||
(loop :for i :from 1 :below (length sequence)
|
||||
:do (loop :for j :from i :downto 1
|
||||
:do (let ((current (elt sequence j))
|
||||
(previous (elt sequence (1- j))))
|
||||
(when (funcall predicate current previous)
|
||||
(rotatef (elt sequence j)
|
||||
(elt sequence (1- j))))))
|
||||
:finally (return sequence)))
|
||||
|
||||
;; (nsrt "adfcghjiklmnoprbtuvqewysxz" #'char<)
|
||||
;; => "abcdefghijklmnopqrstuvwxyz"
|
||||
;;
|
||||
;; (nsrt '(who the hecc do you think i am?)
|
||||
;; (lambda (x y)
|
||||
;; (string< (nsrt (format nil "~a" x) #'char<)
|
||||
;; (nsrt (format nil "~a" y) #'char<))))
|
||||
;; => (AM? HECC DO THE THINK WHO I YOU)
|
||||
;;
|
||||
;; (nsrt (loop :for i :from 1 :to 1000 :collect (random i))
|
||||
;; #'<)
|
||||
;; => [not printed but works, try it!]
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
fun <T : Comparable<T>> Array<T>.insertionSort() {
|
||||
for (i in 1..lastIndex) {
|
||||
val currentElement = this[i]
|
||||
var low = 0
|
||||
var high = i - 1
|
||||
while (low <= high) {
|
||||
val mid = low + (high - low) / 2
|
||||
if (this[mid] <= currentElement)
|
||||
low = mid + 1
|
||||
else
|
||||
high = mid - 1
|
||||
}
|
||||
copyInto(this, low + 1, low, i)
|
||||
this[low] = currentElement
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue