mirror of
git://git.musl-libc.org/musl
synced 2024-12-16 11:45:13 +00:00
22263709ed
Smoothsort is an adaptive variant of heapsort. This version was written by Valentin Ochs (apo) specifically for inclusion in musl. I worked with him to get it working in O(1) memory usage even with giant array element widths, and to optimize it heavily for size and speed. It's still roughly 4 times as large as the old heap sort implementation, but roughly 20 times faster given an almost-sorted array of 1M elements (20 being the base-2 log of 1M), i.e. it really does reduce O(n log n) to O(n) in the mostly-sorted case. It's still somewhat slower than glibc's Introsort for random input, but now considerably faster than glibc when the input is already sorted, or mostly sorted.
45 lines
2.0 KiB
Plaintext
45 lines
2.0 KiB
Plaintext
musl as a whole is licensed under the GNU LGPL version 2.1 or later.
|
|
See the file COPYING for the text of this license.
|
|
|
|
See below for the copyright status on all code included in musl:
|
|
|
|
The TRE regular expression implementation (src/regex/reg* and
|
|
src/regex/tre*) is Copyright © 2001-2006 Ville Laurikari and licensed
|
|
under the terms of the GNU LGPL version 2.1 or later. The included
|
|
version was heavily modified in Spring 2006 by Rich Felker in the
|
|
interests of size, simplicity, and namespace cleanliness.
|
|
|
|
Most of the math library code (src/math/*) is Copyright © 1993 Sun
|
|
Microsystems, Inc. Some files are Copyright © 2003 Steven G. Kargl and
|
|
labelled as such. All have been licensed under extremely permissive
|
|
terms which are compatible with the GNU LGPL. See the comments in the
|
|
individual files for details.
|
|
|
|
The implementation of DES for crypt (src/misc/crypt.c) is Copyright ©
|
|
1994 David Burren. It is licensed under a BSD license compatible with
|
|
the GNU LGPL.
|
|
|
|
The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011
|
|
Valentin Ochs and is licensed under an MIT-style license compatible
|
|
with the GNU LGPL.
|
|
|
|
The x86_64 port was written by Nicholas J. Kain. See individual files
|
|
for their copyright status.
|
|
|
|
All files which have no copyright comments are original works
|
|
Copyright © 2005-2011 Rich Felker, the main author of this library.
|
|
The decision to exclude such comments is intentional, as it should be
|
|
possible to carry around the complete source code on tiny storage
|
|
media. All public header files (include/*) should be treated as Public
|
|
Domain as they intentionally contain no content which can be covered
|
|
by copyright. Some source modules may fall in this category as well.
|
|
If you believe that a file is so trivial that it should be in the
|
|
Public Domain, please contact me and, if I agree, I will explicitly
|
|
release it from copyright.
|
|
|
|
The following files are trivial, in my opinion not copyrightable in
|
|
the first place, and hereby explicitly released to the Public Domain:
|
|
|
|
All public headers: include/*
|
|
Startup files: crt/*
|