最近邻居
解题思路:
1. 使用JDK中的Point2D类,该类定义了坐标系空间中的一个点
2. Point2D是一个抽象类,但是在该类内部定义了静态的Double类,并且Double继承自Point2D
3. 可以通过Double的构造方法来实例化空间中的某个点
4. 将所有的输入数据全部实例化并存放在一个Point2D.Double的数组中
5. 对该数组进行暴力破解,计算其中任意两个点之间的距离,时间复杂度为$O(n^2)$,并保留下最小的两个点的编号,且编号小的在前
Java算法实现:
```java
import java.awt.geom.Point2D;
import java.util.Scanner;
/*
继续阅读 »
在了解堆排序之前,我们有必要清楚“什么是堆呢?”。
堆(英语:Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。
堆的逻辑定义:
堆的实现通过构造二叉堆(英语:binary heap),实为二叉树的一种;由于其应用的普遍性,当不加限定时,均指该数据结构的这种实现。这种数据结构具有以下性质。
任意节点小于(或大于)它的所有后裔,最小元(或最大元)在堆的根上(堆序性)。
堆总是一棵完全树。即
继续阅读 »
9月8日胖记
整个九月都比较忙碌,一直在做事情。没有时间停下来思考。
9月发生了很多事,搬了家,换到新的租处。不再窝在公司附近的一亩三分地。生活范围扩大了一点。每天骑车上下班,跟着爱车在路上飞驰,有一种不一样的感觉。
准备从研发工程师转型去算法工程师,不过路有很长,要慢慢学习,慢慢进步。希望有个好的结果。
继续阅读 »
算法原理
猴子排序 (Bogo Sort) 是个既不实用又原始的排序算法,其原理等同将一堆卡片抛起,落在桌上后检查卡片是否已整齐排列好,若非就再抛一次。其名字源自 Quantum bogodynamics,又称 bozo sort、blort sort 或猴子排序(参见无限猴子定理)。并且在最坏的情况下所需时间是无限的。
伪代码:
javascript
while not InOrder(list) do
Shuffle(list)
done
more
这个排序方法没有办法给出实例分析,下面直接看代码。
JavaScript 语言实现
``` javascript
function bogoSort(array)
继续阅读 »
10月上胖记
整个九月都比较忙碌,一直在做事情。没有时间停下来思考。
9月发生了很多事,搬了家,换到新的租处。不在窝在公司附近的一亩三分地。生活范围扩大了一点。每天骑车上下班,跟着爱车在路上飞驰,有一种不一样的感觉。
准备从研发工程师转型去算法工程师,不过路有很长,要慢慢学习,慢慢进步。希望有个好的结果。
继续阅读 »
总算是有点时间来写博客了。
距离上篇文章已经过去好几个月,这几个月主要在忙写课表和其他的项目,此外就是作业。
趁着有时间,也把博客更新了一遍,从Material换到Next,把文章中的图片全部放到CDN里面。
现阶段的情况
不管怎么算,笔者也是大三了,怎么说也要为了实习工作打算。
之后的时间大概如下安排:
1. Android基础知识复习(四大组件生命周期、启动)
2. MVC,MVP,MVVM
3. 网络连接,IPC,APP优化,动画,框架
4. 新版本的新特性
5. Kotlin的系统学习
6. 刷题(算法,笔试)
希望还来得及吧!
继续阅读 »