分治法(Scheme) -- 快速排序
来源:互联网 发布:智能机锁屏软件 编辑:程序博客网 时间:2024/06/05 04:14
; Quick-sort, 快速排序;======================================================================================(quick-sort (vector 12 23 34 20 11 30) <) ; #(11 12 20 23 30 34)(quick-sort (vector "one" "two" "three" "too" "four") string<?) ; #("four" "one" "three" "too" "two");======================================================================================(define (quick-sort v less?) (define (swap i j) (let ((s (vector-ref v i)) (k (vector-ref v j))) (if (less? k s) (begin (vector-set! v i k) (vector-set! v j s))))) (define (partition i j) (let t ((p (+ i 1)) (q (- j 1))) (if (>= p q) (begin (swap i p) p) (if (less? (vector-ref v p) (vector-ref v i)) (t (+ p 1) q) (if (not (less? (vector-ref v q) (vector-ref v i))) (t p (- q 1)) (begin (swap p q) (t (+ p 1) (- q 1)))))))) (let sort ((start 0) (end (vector-length v))) (if (< start (- end 1)) (let ((p (partition start end))) (sort start p) (sort p end)))) v);========================================================================================(define (quick-sort2 v less?) (define (swap i j) (if (< i j) (let ((r (vector-ref v i))) (vector-set! v i (vector-ref v j)) (vector-set! v j r)))) (let sort ((start 0) (end (vector-length v))) (if (< start (- end 1)) (let t ((p (+ start 1)) (q (+ start 1))) (if (< q end) (if (less? (vector-ref v q) (vector-ref v start)) (begin (swap p q) (t (+ p 1) (+ q 1))) (t p (+ q 1))) (begin (swap start (- p 1)) (sort start p) (sort p end)))))) v)
0 0
- 分治法(Scheme) -- 快速排序
- 分治法--快速排序
- 分治法--快速排序
- 分治法-快速排序
- 分治法-快速排序
- 分治法-----快速排序
- 分治法 --快速排序
- 分治法-快速排序
- 分治法--快速排序
- 快速排序 分治法
- 分治法-快速排序
- Scheme 快速排序
- 分治法之快速排序
- 分治法之快速排序
- 排序4--快速(分治法)
- 分治法之快速排序
- 分治法之快速排序
- 分治法-----快速排序算法
- CSS中的长度问题-------Day76
- mac jdk配置
- tomcat配置虚拟主机
- IOS开发学习笔记-(3) 进度条、等待动画开始停止
- Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据
- 分治法(Scheme) -- 快速排序
- at&T语法格式
- HDR Image encoding formats
- 一周小节
- Linux命令exit - 退出当前shell
- HDOJ题目2086 A1 = ?(数学)
- .net mvc 微信开发笔记(五)------JSON解析,自定义菜单
- Oracle GoldenGate环境中主库和备库 网络突然中断后,主端的dp进程无法启动的问题
- 黑马程序员_JavaBean