数据结构

插入排序: 从0开始每次纳入一个元素进行排序排序排序完成就纳入下一个。

选择排序: 取出0位置与n位置的元素数值比较,数值小的留下元素位置,当比较完数组最后一个时得到最小元素数的位置,将其位置改为0原元素位置之前的元素数位置加一然后开始重复。

堵排序: 1.将数组变成二叉树, 2.从最后一个根节点开始逆回溯。使父节点都大于子节点,如果根节点元素改动则不停与其父节点进行比较交换直到满足才停止,使之变成最大堆。 3.取出顶端元素并改为最小值,再执行2使之变成最大堆。 4.重复3直到所有元素排列完成。

冒泡排序: 一次比较两个,小的去左边,大的去右边,大的和下一个数进行比较直到使数组最右边是最大的数找到之后再对剩下的重复直到所有数排好。(多次分治法论资排辈)

快递排序: 头与尾配对比较保证头小于尾,否则交换,直到从中间分为两组,每次左边组先重复。

归并排序: 将数组不断二分,再按照大小排序进行层层回溯。

求最大值的之分治法:两两决斗,车轮战,只有一个可以活下来。

k路并归: 多组有序数据要合成一组 1.每组添加一个极小值,取出每组最大值做出最大堆。 2.取出最大值并保存堆中包含各组的一个元素。

基数排序: 从最低位开始依次取出0到9的元素,然后对高一位重复操作。

计数排序: 记录每个数值出现几次再排序

桶排序:得到数组的最大值,将0到最大值分成长度相等的数组长度个区间,再把元素归入对应的区间,对每个区间进行排序,取出排好的数据

行排序: 对每一行进行排序,

再对每一行进行排序

第一步是将无序的矩阵形成由三条有序的直线队列。 第二步是把由三条有序直线队列组成的矩阵变成由三条有序的曲线队列组成的矩阵。 第三步是把三条独立的有序曲线队列组成一条有序曲线队列 第四步是把有序的曲线队列拉成一条有序数组 (对于矩阵)

第k小的元素:

随机选一个元素x与其他元素比较分为两部分,前小后大

欲求第k小的元素,需将k与x比较。 若k小。在x的左边迭代上述操作直到找出。 若k大则在k的右边随机抽取x1将x至数组最后以x1划分重复直到xn比k大,重复上一步直到找出。 (可用近似中位数代替随机数)

希尔排序:

以数组长度除二的形式进行排序,组数依次为数组长度/2的n次方直到变成一组 ( 与行排列方法思考方式差不多,区别在于行是把无序的矩阵变成若干条有序曲线队组成的矩阵#好处在于元素在本队列是有序的只需与其他队列进行比较#,再将这些有序曲线队变成一条有序曲线队,再将曲线拉出成直线。 希尔则是把无序队变成每一行都有序二维矩阵,每次插入排序都对矩阵高度进行减少直到变成数组,这里增加了有序队列的条数,减少了长度,队列之间有序性表现为曲线。 前者是减少有序队列条数以增加有效队列的长度,后者是增加队列的条数,减少队列的长度。 因为前者队列之间是无序的所以要减少条数。 后者队列内部是无序的而队列之间是有序的,所以要减少长度。

逻辑结构 集合:麻袋打包 线性:一对一 树形:一对多 图型:多对多 物理结构 顺序存储结构:线串珠子 链式存储结构:挨个问下一个的地址 算法 变量 逻辑判断 数据运算 输入输出 链表 单向链表 每个节点由数据域➕指针,头节点数据为空,指针指向下一个节点 API LInklist<> 方法 clear() is Empty() length() get() inset(int i,T t) remove(i) indexof(T t)返回首次出现的位序号

双向链表 指针➕数据➕指针 数据与数据之间都有指针指向对方 api TowWayLingk list<> 方法比单项多了getfirst和getlast

堆是平衡二叉树 栈先入后出 队列先入先出 二叉树 满二叉树 二叉查找树:也是有序二叉树 平衡二叉树:任意节点的左右两节点高度差绝对值不超过一,(对二叉查找树进行平衡避免过长) 红黑树:根节点为黑色,叶子节点是为空的黑色节点每个红色节点必须有两个黑色的子节点,,插入节点为红色(接近平衡二叉树,对比平衡二叉树而言牺牲一些查找时间,减少了翻转次数) b树:多路平衡查找树接近索引, b+树: 哈夫曼树:

知识
MYSQL