数据结构与算法复习(Java):排序、字符串、数组、链表、二分查找、二叉树
排序算法:
插入排序
希尔排序
选择排序
冒泡排序
计数排序
基数排序
归并排序
快速排序
双向扫描的快速排序
堆排序
字符串算法 (1):
替换字符串中的空格
输入一个字符串,打印出该字符串的所有排列
第一个只出现一次的字符
翻转句子
计算字符串之间的最短距离
字符串算法 (2):
查找字符串中的最长重复子串
求长度为N的字符串的最长回文子串
将字符串中的移到前部,并且不改变非的顺序
不开辟用于交换的空间,完成字符串的逆序C++
最短摘要生成
最长公共子序列
数组 (1):
二维数组的整数查找
旋转数组中的最小数字(旋转数组中的最大数字)
调整数组使奇数位于偶数之前
找出数组中出现次数超过一半的数字
数组 (2):
找到最小的k个数
连续子数组的最大和
连续子数组的最大和(二维)
求数组当中的逆序对
数组 (3):
在递增排序的数组中,查找指定数字出现的个数
查找数组中只出现一次的两个数字
在递增排序的数组中,查找和为s的两个数
输入一个正数s,打印出所有和为s的连续正数序列
数组当中的最大最小值
数组 (4):
求数组当中的最长递增子序列(求数组当中的最长递减子序列)
区间重合判断
一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
链表:
新建链表
反转链表(递归和非递归实现)
获得链表倒数第k个结点
获得链表的中间结点
删除链表结点
交换链表结点
二分查找算法及其变型:
普通二分查找
查找关键字第一次出现的位置
查找关键字最后一次出现的位置
查找小于关键字的最大数字出现的位置
查找大于关键字的最小数字出现的位置
二叉查找树:
建立二叉查找树
删除二叉查找树中指定元素
非递归遍历二叉查找树(先序遍历、中序遍历、后序遍历)
二叉树算法 (1):
递归遍历二叉树(先序遍历、中序遍历、后序遍历)
分层打印二叉树
打印二叉树的第n层
统计二叉树叶结点的个数
统计二叉树的高度
二叉树算法 (2):
获得二叉树的镜像
判断元素是否存在于二叉树中
打印二叉树中和为s的路径
获得二叉树的最大距离
判断二叉树是否是平衡树
二叉树算法 (3):
将二叉树转换成为链表
判断数组是否为二叉树的后序遍历
判断某树是否是另一棵树的子树
根据前序和中序序列重建二叉树