zoukankan      html  css  js  c++  java
  • quick sort and insert sort

    quick sort的思想是使用一个元素将表分成2个部分,其中一个部分是比改元素小,另外一部分是大于等于该元素。

    在scheme里面实现起来相当直观

    (define (qsort p lst)
      (if (null? lst)
        '()
        (let ((e (car lst)) (rest (cdr lst)))
          (let ((less (filter (lambda (x) (p x e)) rest))
                (great (filter (lambda (x) (not (p x e))) rest)))
            (append (qsort p less) (cons e (qsort p great)))))))
    insert sort的实现简单讲就是先将除了第一个元素以外的元素排好序以后将第一个元素插入其中

    (define (insert-sort p lst)
      (define (insert-to-sorted e l)
        (if (null? l)
          (cons e '())
          (if (p e (car l))
            (cons e l)
            (cons (car l) (insert-to-sorted e (cdr l))))))
      (if (null? lst)
        '()
        (insert-to-sorted (car lst) (insert-sort p (cdr lst)))))

    内部过程insert-to-sorted是将元素e插入到有序表l中

  • 相关阅读:
    运动运行。
    stratMove方法
    抛物线
    表单的小例子吖
    常用的查询DOM的方法
    liuyan
    防止xss攻击。
    ES6
    Map的使用
    ZOJ 3998(线段树)
  • 原文地址:https://www.cnblogs.com/mathlover/p/2710592.html
Copyright © 2011-2022 走看看