
数据结构
文章平均质量分 92
快乐的小三菊
这个作者很懒,什么都没留下…
展开
-
冒泡排序
思想: 相邻的两个数相比较,如果第一个数比第二个数大,则交换位置,如果第一个数没有第二个数大,则用第二个数向下比较;第一趟次排序找到最大的那个数放在最后。 public class MaoPao { public static void main(String[] args) { int [] array = new int[]{49,38,65,97,76,13,0,...原创 2017-11-06 20:05:29 · 200 阅读 · 0 评论 -
二叉树、自平衡二叉树和多叉树详解
二叉树、自平衡二叉树和多叉树简单介绍,以及排序方式原创 2017-10-21 15:29:09 · 2120 阅读 · 1 评论 -
归并排序
思想: 将两个(或两个以上)有序表合成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列都是有序的,然后再把有序的子序列合并为整体的有序序列。 public class GuiBing { public static void main(String[] args) { int arr[] = new int[]{14,12,15,13,11,16}; so...原创 2017-11-28 20:22:14 · 235 阅读 · 0 评论 -
直接插入排序
思想: 将第一个元素看成一个数组排序,然后将第一个第二个元素看成一个数组排序,再将第一,二,三个元素看成一个数组排序,以此类推插入排序和选择排序的不同在于,插入排序可提前终止排序,时间复杂度为o(n^2)。 public class Charu { public static void main(String[] args) { int [] a = new int[]...原创 2017-11-13 19:31:17 · 208 阅读 · 0 评论 -
快速排序
思想: 选择一个基准元素,通常选择第一个或者最后一个元素,假设选择是第一个元素,拿第一个元素与最后一个元素进行比较,如果最后的元素的值大于当前的基准元素,则不动,跟最后一个元素比完跟第二个元素比较,若小于则两者交换位置,这样一趟下来,就把数组分为左右两部分,左边小于基准元素,右边大于等于基准元素,基准元素在中间;然后进行递归即可。 public class KuaiSu { ...原创 2017-11-08 16:51:13 · 184 阅读 · 0 评论 -
希尔排序
思想: 插入排序之希尔排序:实质是分组插入排序,又称缩小标量排序;先将整个待排元素分割成若干个子序列分别进行直接插入排序,然后一次缩小增量再进行排序,步长的计算方式为(数组的长度/2,直到步长为1为止)(若21个元素,步长为10,5,2,1) 时间复杂度为:最好O(n);最坏O(nlog2n);平均时间复杂度:O(nlog2n)。 示例代码: public class Xie...原创 2017-11-13 20:21:56 · 176 阅读 · 0 评论 -
简单选择排序
思想: 选择排序-简单选择排序:在要排序的一组数中,选出最大(或者最小)的数与第一个位置的数交换;然后在剩下的数中 再找到最大(最小)的与第二个数交换位置,以此类推,直到第n-1个元素和第n个元素比较为止。 代码示例: public class JianDan { public static void main(String[] args) { jianDanSort...原创 2017-11-20 18:54:16 · 262 阅读 · 0 评论 -
时间复杂度和空间复杂度
1:算法复杂度分为时间复杂度和空间复杂度 a:时间复杂度是指执行算法所需要的计算工作量,简单的说就是语句执行次数 b:空间复杂度是指执行这个算法所需要的内存空间 2:时间复杂度计算方法 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示;若存在某个辅助函数f(n),使得当n趋于无穷大时,T(n...翻译 2018-08-01 16:56:09 · 214 阅读 · 0 评论