经典算法分析总汇

算法(Algorithm)是解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

常用算法

1. 二分查找

对于有序数组,二分查找的效率在大数据量的情况下,效率明显

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(1) 循环方式实现
private static int find(int [] arr,int searchKey){
int lowerBound = 0; //起始索引
int upperBound = arr.length -1; //结束索引
int curIn; //中间索引
while(lowerBound <= upperBound){
curIn = (lowerBound + upperBound) / 2;
if(arr[curIn] == searchKey){
return curIn;
}else{
if(arr[curIn] < searchKey){
lowerBound = curIn + 1;
}else{
upperBound = curIn - 1;
}
}
}
return -1;
}
(2) 递归方式实现
private static int recursiveFind(int[] arr,int start,int end,int searchKey){
if (start <= end) {
int middle = (start + end) >> 1; //中间位置 (start+end)/2
if (searchKey == arr[middle]) {
return middle;
} else if (searchKey < arr[middle]) {
return recursiveFind(arr, start, middle - 1, searchKey);// 小于中值时在中值前面找
} else {
return recursiveFind(arr, middle + 1, end, searchKey);// 大于中值在中值后面找
}
} else {
// 找不到
return -1;
}
}

2. 排序


冒泡排序详解
快速排序详解
直接插入排序详解
希尔排序详解
简单选择排序详解
堆排序详解
归并排序详解

文章目录
  1. 1. 常用算法
    1. 1.1. 1. 二分查找
    2. 1.2. 2. 排序