码迷,mamicode.com
首页 > 其他好文 > 详细

Erlang和C实现O(n)复杂度求中位数

时间:2015-03-31 00:52:47      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:erlang   算法   

方法类似于快速排序,只是它只处理单侧的情况。
Erlang:这里对于奇数和偶数都是求下中位数

find_median([])  ->error;
find_median(A) ->find_median(A,(len(A)+1) div 2).


find_median([H|T],Idx)  ->Len=len([X||X<-T,X<H]),
                            if Len =:= Idx-1  ->[H];

                               Len  >  Idx-1  ->find_median([X||X<-T,X<H],Idx);

                               Len  <  Idx-1  ->find_median([X||X<-T,X>H],Idx-Len-1)

                            end.
len([]) ->0;
len([_H|T]) ->1+length(T).

c语言版本明天再写…

Erlang和C实现O(n)复杂度求中位数

标签:erlang   算法   

原文地址:http://blog.csdn.net/li8630/article/details/44764121

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!