算法上机1(java)
2014-04-25 10:28
316 查看
四次java上机,难得找了天完整的时间来整理之前写过的代码。
1. Describe a Θ(n lg n)-time algorithm that, given a set S of n integers and another integer x, determines whether or not there exist two elements in S whose sum is exactly x. (Implement exercise 2.3-7.)
2. Implement priority queue.
3. Implement Quicksort and answer the following questions. (1) How many comparisons will Quicksort do on a list of n elements that all have the same value? (2) What are the maximum and minimum number of comparisons will Quicksort do on a list of n elements, give an instance for maximum and minimum case respectively.
4. Implement Randomized Quicksort.
1.先将数组进行排序,因为要求算法的复杂度为Θ(n lg n),所以选择堆排序,或者是归并,快排最差情况不符合要求,所以舍去。而主程序的思路:设置两个指标,一个指向头,一个指向尾,不断向中间移动,如果sum[i]+sum[j]>x,则j--,如果sum[i]+sum[j]<x,则i++,直至两个指标指向同一个数或找到结果。
代码如下:
2.第二题优先队列,用堆结构,我顺便将堆排序也写了,这部分写的比较粗糙,因为数组不可变长,所以实现起来不方便,后来学了容器就容易多了,看起来也没那么多麻烦,因为讲究的是算法,所以就没有再去改。测试用的数组a【0】不放任何数据,下标是从1开始,因为在求孩子节点和父亲节点时,用0进行运算不方便。
代码如下:
接下来实现优先队列,只提供思路:
3、第三题和第四题放在一块写了,核心地方并没有变。主要是在partition函数。以一个数为标准,比它大的放在后面,比它小的放在前面,返回其坐标。
1. Describe a Θ(n lg n)-time algorithm that, given a set S of n integers and another integer x, determines whether or not there exist two elements in S whose sum is exactly x. (Implement exercise 2.3-7.)
2. Implement priority queue.
3. Implement Quicksort and answer the following questions. (1) How many comparisons will Quicksort do on a list of n elements that all have the same value? (2) What are the maximum and minimum number of comparisons will Quicksort do on a list of n elements, give an instance for maximum and minimum case respectively.
4. Implement Randomized Quicksort.
1.先将数组进行排序,因为要求算法的复杂度为Θ(n lg n),所以选择堆排序,或者是归并,快排最差情况不符合要求,所以舍去。而主程序的思路:设置两个指标,一个指向头,一个指向尾,不断向中间移动,如果sum[i]+sum[j]>x,则j--,如果sum[i]+sum[j]<x,则i++,直至两个指标指向同一个数或找到结果。
代码如下:
2.第二题优先队列,用堆结构,我顺便将堆排序也写了,这部分写的比较粗糙,因为数组不可变长,所以实现起来不方便,后来学了容器就容易多了,看起来也没那么多麻烦,因为讲究的是算法,所以就没有再去改。测试用的数组a【0】不放任何数据,下标是从1开始,因为在求孩子节点和父亲节点时,用0进行运算不方便。
代码如下:
接下来实现优先队列,只提供思路:
3、第三题和第四题放在一块写了,核心地方并没有变。主要是在partition函数。以一个数为标准,比它大的放在后面,比它小的放在前面,返回其坐标。
相关文章推荐
- 算法上机2(java)
- java 快速排序 算法
- JAVA实践优化Prim最小生成树算法
- 算法设计与复杂性 第五次上机 Arbitrage
- 算法经典面试题整理(java实现)
- java上机 第五周 任务4 测试三个类
- 梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python)
- java生成MD5校验码及算法实现
- JAVA实现RSA加密解密 非对称算法
- C03-Java同步实践加强班第10周上机任务
- 通用类型的两路归并算法实现(一)-Java中int型归并排序的实现
- 算法编程(JAVA)--八皇后问题
- java中身份证有效性验证算法
- Java经典算法
- Java与算法(11)
- 一著名软件公司的java笔试算法题
- Java 算法题 一
- 算法笔记_089:蓝桥杯练习 7-2求arccos值(Java)
- JAVA版百钱百鸡算法