package com.jtws.common.base; /** * Created by kongweichun on 2019/1/22. * chongqing liangyao * * 算法工具 * 1:线性结构 (数据元素之间存在“一对一”数据对应关系) * 数组、链表、队列、栈 * 2:非线性结构 * 树、图、表 * * *==========================线性结构================================ *[数组]: * 特点: * 数组中的元素在内存中连续存储的,可以根据是下标快速访问元素, * 因此,查询速度很快,然而插入和删除时,需要对元素移动空间,比较慢。 * 使用场景: * 频繁查询,很少有增加删除的操作 * *[链表]: * 特点: * 元素可以不连续内存中,是以索引将数据联系起来的,当查询元素的时候需要从头开始查询, * 所以效率比较低,然而添加和删除的只需要修改索引就可以了 * 使用场景: * 很少查询,频繁的增加删除操作 * *[队列]: * 特点: * 先进先出 * 使用场景: * 多线程阻塞队列管理非常有用 * *[栈]: * 特点: * 先进后出 * 使用场景: * 实现递归以及表示式 * *[数组与链表的区别]: * 数组连续,链表不连续(从数据存储形式来说) * 数组内存静态分配,链表内存动态分配 * 数组查询方便快捷,链表查询复杂不易 * 数组添加删除复杂不易,链表添加删除方便快捷 * 数组从栈中分配内存,链表从堆中分配内存 *==========================线性结构================================ * *==========================算法分类================================ * 1:插入排序 (直接插入排序,希尔排序) * 2:交换排序 (冒牌排序,快速排序) * 3:选择排序 (直接选择排序,堆排序) * 4:归并排序 * 5:分配排序 (基数排序) * 所需辅助空间最多:归并排序 * 所需辅助空间最少:堆排序 * 平均速度排序最快:快速排序 * 不稳定:快速排序、希尔排序、堆排序 *==========================算法分类================================ * Create