[https://www.jianshu.com/p/c1a05c50a75c](https://www.jianshu.com/p/c1a05c50a75c)
~~~
// 快速排序法
public class Algorithm0004 {
public static void main(String[] args) {
int[] nums = new int[]{8, 500, 22, 3, 1000, 5, 999, 10, 88, 7};
sort(nums, 0, nums.length - 1);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
private static void sort(int[] nums, int begin, int end) {
if (begin > end) {
return;
}
int base = nums[begin];
int i = begin;
int j = end;
while (j != i) {
while (nums[j] >= base && j > i) {
j--;
}
while (nums[i] <= base && i < j) {
i++;
}
if (j > i) {
// 交换位置
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
nums[begin] = nums[i];
nums[i] = base;
sort(nums, begin, i - 1);
sort(nums, i + 1, end);
}
}
~~~
- 基础
- 数据
- 数据元素
- 数据结构
- 集合结构
- 线性结构
- 树型结构
- 图状结构
- 数据存储结构
- 算法定义
- 算法效率度量
- 算法效率分析
- 时间复杂度
- O(1)
- O(n)
- O(n2)
- O(logn)
- 空间复杂度
- 线性表
- 数组
- 链表
- 串矩阵和广义表
- 串
- 矩阵
- 广义表
- 栈和队列
- 栈
- 队列
- 树和二叉树
- 二叉树
- 满二叉树
- 完全二叉树
- 哈夫曼树
- 二叉查找树-BST树
- AVL树
- 红黑树
- B树
- B+树
- 字典树
- 跳表
- 算法
- 排序算法
- 冒泡排序
- 选择排序
- 快速排序
- 插入排序
- 希尔排序
- 归并排序
- 堆排序
- 基数排序
- 计数排序
- 桶排序
- 查找算法
- 二分查找算法
- Hash算法
- 一致性hash算法
- 算法题
- 001-用两个栈实现队列
- 002-只使用栈和递归逆序一个栈
- 附录
- SkipList跳表