算法上机1(java)
来源:互联网 发布:非80端口跳转 编辑:程序博客网 时间:2024/06/16 12:50
四次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(java)
- 算法上机2(java)
- 算法与数据结构上机经典算法(1)
- Java上机练习(1)
- Java上机心得1
- Java上机心得1
- 第十三周上机实践—项目1—验证算法(1)Prim算法的验证
- 第13周上机实践项目- 验证算法(1)Prim算法的验证
- Java集合框架上机练习题(泛型1)
- Java集合框架上机练习题(泛型1)
- Java集合框架上机练习题(泛型1)
- 计算机网络上机(1)
- 第十一周上机实践—项目1(1)—层次遍历算法的验证
- 第14周上机实践项目1 - 验证算法(1)
- 第十四周上机实践—项目1(1)—验证折半查找算法
- 第15周上机实践项目1 - 验证算法(1)
- 第十五周上机实践—项目1(1)—哈希表算法的验证
- 第九周上机实践项目4——广义表算法库及应用(1)
- IT人才需求前景甚好 软件开发市场依然走俏
- oracle中的数据库、用户、方案、表空间、表对象之间的关系
- maven dependency restlet
- object c中的selector
- 非对称加密算法的由来(D-H算法)
- 算法上机1(java)
- c# global::
- 使用虚拟机安装Linux出现错误[Errno 5] Input/Output error
- FreeBSD常用命令大全
- android常用
- mysql优化
- Effective STL:13 - 18 vector 和 string
- poj 1222 EXTENDED LIGHTS OUT(高斯消元)
- WPF ScrollViewer一些记录