Download code

Jump to: navigation, search

Back to Insertion_sort_(Erlang)

Download for Windows: single file, zip

Download for UNIX: single file, zip, tar.gz, tar.bz2

isort.erl

 1 % The authors of this work have released all rights to it and placed it
 2 % in the public domain under the Creative Commons CC0 1.0 waiver
 3 % (http://creativecommons.org/publicdomain/zero/1.0/).
 4 % 
 5 % THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 6 % EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 7 % MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 8 % IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 9 % CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10 % TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
11 % SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 % 
13 % Retrieved from: http://en.literateprograms.org/Insertion_sort_(Erlang)?oldid=19162
14 
15 % Sort a list %
16 -module(isort).
17 -export([sort/1]).
18 
19 sort(List) when is_list(List) ->
20     sort(List, []).
21 
22 sort([H | T], []) ->
23     sort(T, [H]);
24 
25 sort([H | T], [AccH | AccT]) when H =< AccH ->
26     sort(T, [H, AccH | AccT]);
27 
28 sort([H | T], [AccH | AccT]) ->
29     NewAcc = [AccH | sort(H, AccT)],
30     sort(T, NewAcc);
31 
32 sort([], Acc) ->
33     Acc;
34 sort(H, [AccH | AccT]) when H =< AccH ->
35     [H, AccH | AccT];
36 
37 sort(H, [AccH | AccT]) ->
38     [AccH | sort(H, AccT)];
39 
40 sort(H, []) ->
41     [H].


hijacker
hijacker
hijacker
hijacker