快速排序,简洁到难以置信!! 就这麽简单,有点吃惊吧!! qsort( [] ) -> [];qsort( [ Pivot | T ] ) -> qsort( [ X || X<-T, X < Pivot ] ) ++ [Pivot] ++ qsort( [ X || X<-T, X >= Pivot ] ). 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 语言是erlang,以前没接触过的估计看不懂吧?完全是另一种编程思想, wan quan kan bu dong , hehe 没接触过这种语言,不过能大概看出点思路qsort( [] ) -> []; //这个好像是定义规则,即相当于函数声明,结果返回同一个数组qsort( [ Pivot | T ] ) -> //这个好像是定义函数的具体实现的规则 qsort( [ X || X <-T, X < Pivot ] ) //当数组中的元素X不满足<Pivot时,T跟X交换,然后递归 ++ [Pivot] ++ //这个有点看不明白,感觉是左右下标分别移动 qsort( [ X || X <-T, X >= Pivot ] ). //当数组中的元素X不满足>=Pivot时,T跟X交换,然后递归 无聊,你自己写个函数que(参数);之后调用que(参数)还更简洁呢。脚本语言不差不多都是这个原理么? Erlang 对数组的操作非常强大。qsort( [ Pivot | T ] ) 表示把数组的第一个元素放到 Pivot 中,把剩下的放到 T 中,进行调用;qsort( [ X || X <- T, X < Pivot ] ) 把 T 中所有小于 Pivot 的取出来,继续调用 qsort++ [Pivot] ++ ++ 表示数组的结合,即把 Pivot 的值合并进来qsort( [ X || X <- T, X >= Pivot ] ). 把 T 中所有大于 Pivot 的取出来,继续调用 qsort经过这一步之后,以第一个元素为界,左边比这个数小,右边比这个数大。然后再将左边和右边的数组继续调用 qsort,直到 T 中没有元素了,这样的话排序就完成了。 这个函数Java里也有,应该是Java先有的 请教一下,Erlang这种语言主要是用在哪方面的? 太强悍了。用它和c写的qsort比较一下,看看谁更快,然后吧结果贴出来让大家见识见识。 java swing 能做视频方面的开发吗? 求一正则表达式 来看看这个正则表达式 问一个Eclipse JUnit测试问题 JLable问题:如何能够让jLable中内容显示不下时自动换行? scjp求助,这道题应该选什么,以及原因,谢谢 往JFrame里面添加Jpanel出现java.lang.ClassCastException 怎样判断获得的URL是相对路径还是绝对路径??急死了 拿到一个项目的java源程序,有185个文件,怎么看?来着有分,不够再加。 java 安装文件 看看这个程序怎么写啊! 看看这个异常是怎么回事:ResultSet is closed
没接触过这种语言,不过能大概看出点思路qsort( [] ) -> []; //这个好像是定义规则,即相当于函数声明,结果返回同一个数组qsort( [ Pivot | T ] ) -> //这个好像是定义函数的具体实现的规则 qsort( [ X || X <-T, X < Pivot ] ) //当数组中的元素X不满足<Pivot时,T跟X交换,然后递归 ++ [Pivot] ++ //这个有点看不明白,感觉是左右下标分别移动 qsort( [ X || X <-T, X >= Pivot ] ). //当数组中的元素X不满足>=Pivot时,T跟X交换,然后递归
之后调用
que(参数)还更简洁呢。
脚本语言不差不多都是这个原理么?
++ [Pivot] ++ ++ 表示数组的结合,即把 Pivot 的值合并进来
qsort( [ X || X <- T, X >= Pivot ] ). 把 T 中所有大于 Pivot 的取出来,继续调用 qsort经过这一步之后,以第一个元素为界,左边比这个数小,右边比这个数大。然后再将左边和右边的数组继续调用 qsort,直到 T 中没有元素了,这样的话排序就完成了。
这个函数Java里也有,应该是Java先有的