zoukankan      html  css  js  c++  java
  • Programming Pearls 笔记(1)

    COLUMU 1: CRACKING THE OYSTER

           (原版的英文,读起来确实费劲。。不过要坚持。。。。。我就写写大致内容,参考参考其他中文版)

    问题描述:

         输入:小于n=107的正整数(positive integers),不重复出现,没有其他相关联的信息。

         输出:按照从大到小的顺序排列

         约束条件(constraints):1Mb(megabyte)的主内存空间,充足的硬盘存储。运行时间最多几分钟,最好10s,( a run time of ten seconds need not be decreased)

    程序设计:
         这里谈到两个解决方案

              1)归并排序(Merge Sort),会产生大量中间文件(work files)

              2)将每个整数看作是32位整数,1MB就可以存储大约 250000个整数,然后对文件,40次读取input files内容,利用快排(Quicksort:A Quicksort would be quite efficient for the main-memory sorts.).这样就没有中间文件了,但是要多次读写input files.

    实现方案:

         就开始特定的问题而言,由于都是整数,我们考虑用这样的存储方式来存储数据。

         例如{1,2,3,5,8,13}我们可以用这样的字符串来存储:

          0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 

         即,对于整数n,就在第n位上写1。

         对于排序的实现:伪代码如下

     1 //phase 1: initialize set to empty
    2 for i = [0,n)
    3 bit[i] = 0
    4 //phase 2: insert present elements into the set
    5 for each i in the input file
    6 bit[i] = 1
    7 //phase 3: write sorted output
    8 for i = [0,n)
    9 if bit[i] == 1
    10 write i on the output file

    (ps:对于我个人来讲:我很好奇怎么样去开107这样大的数组?亦或是这么长的字符串?这个不是重点。。。。也是我个人知识有限)

    这样的作法,相比上面的两种方案来讲,实现了,对input file  一次读入,不产生中间文件,效率很高的实现了排序。

    最后一项

    原则(Principles)

        正确的问题(the right broblems)

             如果你能正确的定义问题,将会事半功倍。解决问题前,要仔细思考,对我们学生而言就是审题。显然上面的解法,仅仅针对于特定的排序有效 :1.正整数 2.不重复 3.没有      关联信息。

        Bitmap的数据结构

             这也是一种有效的组织数据结构的方法,如果不满足那三个条件,可以做出一些修改,表项上面要复杂些。

        Multiple-Pass Algorithms

        A time-Space Tradeoff and One That Isn't。 时间空间的转换,不可偏废

        A simple Design 程序设计应该尽可能简单。简单的程序总比复杂的程序要健壮、高校。

    个人水平有限,对内容的理解就到此。。很多不明白的地方,以后再补充吧。。

          

  • 相关阅读:
    bzoj 1030 [JSOI2007]文本生成器
    Swift 学习笔记 (闭包)
    Swift 学习笔记 (函数)
    HTML 学习笔记 JQueryUI(Interactions,Widgets)
    HTML 学习笔记 JQuery(表单,表格 操作)
    HTML 学习笔记 JQuery(animation)
    HTML 学习笔记 JQuery(盒子操作)
    HTML 学习笔记 JQuery(事件)
    HTML 学习笔记 JQuery(DOM 操作3)
    HTML 学习笔记 JQuery(DOM 操作2)
  • 原文地址:https://www.cnblogs.com/xibaohe/p/2361364.html
Copyright © 2011-2022 走看看