Data update

This commit is contained in:
Ingy döt Net 2024-07-13 15:19:22 -07:00
parent 29a5eea0d4
commit 5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions

View file

@ -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!]

View file

@ -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
}
}