1、单例模式——懒汉式
class
LazySingleton {
private
static
LazySingleton
singleton
;
private
LazySingleton() {
}
public
static
LazySingleton
getInstance()
{
if
(
singleton
==
null
) {
singleton
=
new
LazySingleton();
}
return
singleton
;
}
}
2、单例模式——恶汉式
class
HungrySingleton {
private
static
HungrySingleton
singleton
=
new
HungrySingleton();
private
HungrySingleton() {
}
public
static
HungrySingleton
getInstance()
{
return
singleton
;
}
}
3、冒泡排序
public
static
void
bubbleSort(
int
[]
arr
) {
for
(
int
i
= 0;
i
<
arr
.
length
- 1;
i
++) {
boolean
flag
=
true
;
// 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已然完成。
for
(
int
j
= 0;
j
<
arr
.
length
- 1 -
i
;
j
++) {
if
(
arr
[
j
] >
arr
[
j
+ 1]) {
swap
(
arr
,
j
,
j
+ 1);
flag
=
false
;
}
}
if
(
flag
) {
break
;
}
}
}
4、二叉树
这块代码方面都是比较类似的就索性附上链接了!
5、递归代码
public
int
climbStairs(
int
n
) {
int
i
= 1;
if
(
n
<= 0)
return
0;
if
(
n
== 1) {
return
i
;
}
if
(
n
== 2) {
i
++;
return
i
;
}
else
return
climbStairs(
n
- 1) + climbStairs(
n
- 2);
}
测试方法:
public
static
void
main(String[]
args
) {
ClimbStairs
cs
=
new
ClimbStairs
();
int
a
=
cs
.climbStairs(4);
System.
out
.println(
a
);
}
6、快速排序
// 三数取中
// 下面的两步保证了array[
hi
]是最大的;
int
mid=
lo
+(
hi
-
lo
)/2
;
if
(array[mid]>array[hi])
{
swap(
array
[
mid
],
array
[
hi
]);
}
if
(array[lo]>array[hi])
{
swap(
array
[
lo
],
array
[
hi
]);
}
// 接下来只用比较array[
lo
]和array[mid],让较小的在array[
lo
]位置就OK。
if
(array[mid]>array[lo])
{
swap(
array
[
mid
],
array
[
lo
]);
}
int
key
=
array
[
lo
];