erlang 排序算法
来源:互联网 发布:python前景和待遇 编辑:程序博客网 时间:2024/05/04 20:12
快速排序:拿一个数出来做基准,小放左,大放右
sort([]) -> [];sort([H|T]) -> sort([X||X<-T,X<H]) ++ [H] ++ sort([X||X<-T,X>=H]).
插入排序:维护一个有序列和无序列,假定这个数组的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后挪,直到当前外层元素的值大于或等于它前面的位置为止.这具算法在排完前k个数之后,可以保证a[1…k]是局部有序的,保证了插入过程的正确性.
sort([]) -> [];sort([H|T]) -> sort([H],T,[]).sort(A,[],[]) -> A;sort(A,[],B) -> B++A;sort([],[B1|B2],N) -> sort(N++[B1],B2,[]);sort([A1|A2],[B1|B2],N) -> if A1<B1 -> sort(A2,[B1|B2],N++[A1]); A1>=B1 -> sort ([B1,A1|A2],B2,N) end.
归并排序:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。值得注意的是归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。
-module(sort_gb).-compile(export_all).sort([]) -> [];sort([A]) -> [A];sort(L) -> {L1,L2} = lists:split(length(L) div 2,L), sort(sort(L1),sort(L2)).sort([],L) -> L;sort(L,[]) -> L;sort([H1|T1],[H2|T2]) -> if H1 =< H2 -> [H1|sort(T1,[H2|T2])]; H1 > H2 -> [H2|sort([H1|T1],T2)] end.
堆排序:就实现一个完全二叉树,loop(取树根,调整树结构)。可选大根堆和小根堆的实现方式。
https://github.com/daqing/algorithms/blob/master/heap_sort/heap_sort.erl
- erlang 排序算法
- Erlang实现排序算法
- erlang 排序算法
- erlang 实现psrs 并行排序算法
- Erlang的算法-(二)合并排序/归并排序
- erlang 算法
- erlang基础练习-排序
- erlang实现快速排序
- Erlang 并行快速排序
- Erlang -奇偶并行排序
- Erlang实现PSRS排序
- erlang实现bresenham算法
- erlang的MD5算法
- Erlang的md5算法
- Erlang 写算法
- erlang 实现geohash算法
- Erlang的算法-(一)递归快速排序和MapReduce分布式的快排
- erlang、clojure快速排序对比
- 编程之美 数组循环移位
- 最长回文字符串(manacher算法)
- 图像配准方面的一些算法归类
- nyoj-106-背包问题
- 多校第八场 Hdu 4681 String
- erlang 排序算法
- The Unquiet Grave——4、The Experiment
- 用Set类判断Map里key是否存在的办法
- HDU--2952 -- Counting Sheep [广搜]
- 学生信息管理系统(一)
- 如果这点困难都克服不了,我们什么也就不必想不必做了
- 日积月累--小技巧之二
- iOS SDK:那些关于iOS调试的技巧
- SQL Server中语句的自动参数化