就这麽简单,有点吃惊吧!! qsort( [] ) -> [];qsort( [ Pivot | T ] ) -> qsort( [ X || X<-T, X < Pivot ] ) ++ [Pivot] ++ qsort( [ X || X<-T, X >= Pivot ] ).
解决方案 »
- 小弟初学,求一算法
- 跨平台POS软件客户端可否选用java?
- 在网络上用URL多一个3g大小的log文件,每次到结尾处都会报Connection Reset错误,请问该怎样处理?
- 一个菜鸟级的问题,请各位高手指教
- socket多人通信的问题。
- JAVA读取文件中的单项名,再进行单个名字排序的问题
- 请问:private DialogWindow parent;错了吗?
- [求助] JDK1.4方法读文件出现乱码,请帮忙!
- 请问tomcat3 or tomcat4里的mod_webapp.so文件是怎样形成的呀,(只有100分了)
- 求解为什么运行不出来啊。本人是新手啊
- 看看这个程序怎么写啊!
- 看看这个异常是怎么回事: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先有的