我需要对数组进行排序,但不是经典排序。而且,在Erlang! 我在谈论数组,其中每个元素是两个整数的数组。在Erlang中对数组进行排序
例如: [[6,0],[12,1],[5,2],[10,3]]
我需要这个阵列中的第一个元素的功能进行排序每个阵列 像这样:
[[5,2],[6,0],[10,3],[12,1]]
首先,我与此成功:
-module(insertSort).
-export([insertion/1,insert/1,insert/2]).
insertion(L) -> lists:foldl(fun insert/2, [], L).
insert([]) -> [].
insert(X,[]) -> [X];
insert([],Y) -> [Y];
insert(X= [X1,_], L= [[H1,_] | _]) when X1 =< H1 -> [X|L];
insert(X,[H|T]) -> [H|insert(X, T)].
有时,数组被排序。但我有两个例子,给我两个奇怪的情况:
第一: [10,3],[5,2],[12,1],[6,0] 成为: [[[5,2],[6,0],[10,3],[12,1]]]]
不错,但我不能用那个奇怪的建筑。看起来我有一个数组,里面有一个数组,里面有我所有的两个元素数组。
第二: [[5,16],[11,12],[9,8],[16,4]] 成为: [[[5,16],“\吨\ b”, “符\ v \ F”,[16.4]]]
是的,真的,这些\ t \ b ..
我在二郎一个初学者,但我成功做了很多东西我自己。 我的项目是关于Shank算法,试图解决y = a^x mod n其中给出了y,a和n。
你能帮我告诉我,我的insertSort模块有什么问题吗?
非常感谢,对不起我的英语,我尽力做到最好。
请注意,“\ t \ b”只是另一种写作方式[9,8]。他们的意思完全一样。同样,“\ v \ f”与[11,12]相同。只是如果列表由可打印字符代码组成,那么shell会将其打印为字符串。 – RichardC
谢谢@RichardC的启发! –
我无法在我的手机上试用它,但我认为'list:sort(L).'就是你想要的。 – Pascal