引言
最近实习,闲着无聊,买了本《剑指offer》,看到里面的算法面试题不错,正好每天晚上闲着也没事,然后就打算拿来刷一刷,活跃一下思维,工作期间保证一天一题,双休日的话看心情刷题,所有题目的代码均保证通过oj的测试,同时代码放在github上,欢迎download和star。

数据结构可分为线性结构和非线性结构两大类。。一般的,线性结构只能用来描述数据元素之间的线性顺序关系,而很难反映元素之间的层次(分支)关系。本文将要讨论一种非线性数据结构,所谓非线性结构是指在结构中至少存在一个数据元素,它具有两个或两个以上的直接后继或直接前驱。

树形结构,是一类非常重要的非线性数据结构,它用于描述数据元素之间的层次关系。树形结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树来形象表示。经常用到的两种结构是树和二叉树。

二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加。但是它也有自己的缺点:删除操作复杂。

概述

排序算法无论是在日常的编码中亦或者是面试中都经常出现,比较常见的像冒泡排序法,这应该是大家入门是必须要会的排序算法,下面使用java语言实现几种常用的排序。

这里先贴出两张思维导图:

第一张图是我们在编码中所能遇到的所有的排序方法,可能不太全,后期遇到了再慢慢补充

数据结构与算法之排序

本文主要讲内部排序,内部排序和外部排序不同之处在于,内部排序只使用内存进行排序,外部排序使用内存和外存结合起来进行排序。