Algorithm
运动中的石头A Moving Stone
石头的力量!!!
展开
-
算法基础概述
1、二分查找是什么:二分查找是一种算法,输入是一个有序的元素列表(必须是有序的),查找元素在列表中的位置。二分查找,每次取中间的那个元素,根据大小将余下的数字排除一半。运行时间:2、选择排序(1)链表链表中的元素可存储在内存的任何地方,链表的每个元素都存储了下一个元素的地址,从而使一系列随机的内存地址串在了一起。在链表中添加元素很容易:只需要将其放入内存中,并将其地址...原创 2019-07-10 14:24:33 · 96 阅读 · 0 评论 -
二叉树的前序、中序和后续之间的相互求解
二叉树(Binary Tree):是有限多个节点的集合,这个集合或者是空集,或者由一个根节点和两个互不相交的、分别称为左子树和右子树的二叉树组成。二叉树最基本的操作是遍历,一般约定遍历时左节点优于右节点,这样根据节点的遍历顺序可以分为三种遍历操作:前序(中左右),先遍历根节点,再处理左右节点;中序(左中右),先遍历左节点然后处理根节点,最后处理右节点;后续(左右中),先遍历左右节点,然后再...原创 2019-07-01 13:59:18 · 2968 阅读 · 0 评论 -
冒泡排序---优秀的讲解
1. 图示过程2. 动图展示3. 文字叙述过程对于一组包含n个数据的记录,冒泡排序在最坏的情况下需要进行n-1趟排序第1趟:依次比较0和1、1和2、2和3...(n-2)和(n-1)索引的元素,如果发现第1个数据大于第2个数据,交换他们,经过第1趟排序,最大的元素排到了最后 第2趟:依次比较0和1、1和2、2和3...(n-3)和(n-3)索引的元素,如果发现第1个数据大...转载 2019-08-04 09:08:29 · 205 阅读 · 0 评论 -
归并排序---优秀的讲解
1. 图示过程(1) 归并排序的流程(2) 合并两个有序数组的流程2. 动图展示3. Java代码实现public static void mergeSort(int[] arr) { sort(arr, 0, arr.length - 1);}public static void sort(int[] arr, int L, int R) { ...转载 2019-08-02 09:30:30 · 227 阅读 · 0 评论 -
选择排序---优秀的讲解
1. 图示过程说明:此图示为未优化的选择排序示意图,意在说明原理2. 动图展示说明:此动图为优化后的选择排序,每趟只交换一次3. 文字叙述过程第1趟比较:拿第1个元素依次和它后面的每个元素进行比较,如果第1个元素大于后面某个元素,交换它们,经过第1趟比较,数组中最小的元素被选出,它被排在第一位 第2趟比较:拿第2个元素依次和它后面的每个元素进行比较,如果第...转载 2019-08-07 10:04:14 · 135 阅读 · 0 评论 -
插入排序---优秀的讲解
1. 图示过程插入排序图示2. 动图展示3. 文字叙述过程第1趟插入:将第2个元素插入前面的有序子序列,此时前面只有一个元素,当然是有序的 第2趟比较:将第3个元素插入前面的有序子序列,前面的2个元素是有序的 ...... 第n-1趟比较:将第n个元素插入前面的有序子序列,前面n-1个元素是有序的4. Java代码实现public static void in...转载 2019-08-07 10:29:34 · 143 阅读 · 0 评论 -
快速排序---优秀的讲解
1. 经典快速排序图示过程(1) 经典快速排序的总体流程(2) 根据基准值分区的过程在[算法题] 荷兰国旗问题中有详细的介绍。2. 随机快速排序经典快速排序总是指定数组或者某部分的最后一个元素作为基准值,随机快速排序指定数组或者某一部分中的随机值作为基准值。3. 动图展示quickSort.gif4. 随机快速排序Java代码实现/** * 快速排序...转载 2019-08-07 11:04:27 · 152 阅读 · 0 评论