diff options
| author | Daniel Mendler <mail@daniel-mendler.de> | 2023-01-08 13:10:52 +0100 |
|---|---|---|
| committer | Daniel Mendler <mail@daniel-mendler.de> | 2023-01-08 13:10:52 +0100 |
| commit | b9bf90e71c32ac3250f9a6a37eb809d836beb159 (patch) | |
| tree | 515eb3e372b7c141e53b8f2de36de818f4194bad /compat-25.el | |
| parent | 1b348a4df924d32b30784ddf816368538e08f49e (diff) | |
compat-25: Optimize sort, improve test
O(n²) -> O(nlogn)
Diffstat (limited to 'compat-25.el')
| -rw-r--r-- | compat-25.el | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/compat-25.el b/compat-25.el index 157fc31..ef0c78b 100644 --- a/compat-25.el +++ b/compat-25.el @@ -49,10 +49,13 @@ usage: (bool-vector &rest OBJECTS)" ((listp seq) (sort seq predicate)) ((vectorp seq) - (let ((cseq (sort (append seq nil) predicate))) - (dotimes (i (length cseq)) - (setf (aref seq i) (nth i cseq))) - (apply #'vector cseq))) + (let ((list (sort (append seq nil) predicate)) + (p list) + (i 0)) + (while p + (aset seq i (car p)) + (setq i (1+ i) p (cdr p))) + (apply #'vector list))) ((signal 'wrong-type-argument 'list-or-vector-p)))) ;;;; Defined in editfns.c |
