1. package algorithms.util; /****************************************************************************** * Compilation: javac Out.java * Execution: java Out * Dependencies: none * * Writes data of various types to: stdout, file, or socket. * *****…
1. package algorithms.util; /****************************************************************************** * Compilation: javac In.java * Execution: java In (basic test --- see source for required files) * Dependencies: none * * Reads in data of var…
1. package ADT; /****************************************************************************** * Compilation: javac Transaction.java * Execution: java Transaction * Dependencies: StdOut.java * * Data type for commercial transactions. * *************…
1. package ADT; import algorithms.util.StdOut; /****************************************************************************** * Compilation: javac Date.java * Execution: java Date * Dependencies: StdOut.java * * An immutable data type for dates. * *…
一. 方法可以调用自己(如果你对递归概念感到奇怪,请完成练习 1.1.16 到练习 1.1.22).例如,下面给出了 BinarySearch 的 rank() 方法的另一种实现.我们会经常使用递归,因为递归代码比相应的非递归代码更加简洁优雅.易懂.下面这种实现中的注释就言简意赅地说明了代码的作用.我们可以用数学归纳法证明这段注释所解释的算法的正确性.我们会在 3.1 节中展开这个话题并为二分查找提供一个这样的证明.编写递归代码时最重要的有以下三点.‰ 递归总有一个最简单的情况——方法的第一条语…
一.介绍 1.算法的时间和空间间复杂度 2.特点 Running time is insensitive to input. The process of finding the smallest item on onepass through the array does not give much information about where the smallest itemmight be on the next pass. This property can be disadvant…
一. 1. 2. 3. 二.代码 package algorithms.mergesort22; import algorithms.util.StdIn; import algorithms.util.StdOut; /****************************************************************************** * Compilation: javac MergeBU.java * Execution: java MergeBU…
一. 1.特点 (1)merge-sort : to sort an array, divide it into two halves, sort the two halves (recursively), and then merge the results. As you will see, one of mergesort’s most attractive properties is that it guarantees to sort any array of N items in t…
package algorithms.elementary21; import algorithms.util.StdIn; import algorithms.util.StdOut; /****************************************************************************** * Compilation: javac InsertionX.java * Execution: java InsertionX < input.tx…
一.介绍 1.希尔排序的思路:希尔排序是插入排序的改进.当输入的数据,顺序是很乱时,插入排序会产生大量的交换元素的操作,比如array[n]的最小的元素在最后,则要经过n-1次交换才能排到第一位,因为插入排序元素只能一位一位地交换.基于插入排序的这个缺点,希尔排序是以一个区间来的交换元素,然后不断缩小区间,直到为1.它的理论是,每次经过一个区间的排序后,元素就会更有序些,所以下一个区间排序时,要交换的元素次数会变少. 2.详细的数据排序交换过程 3. Proposition. The numbe…