算法
文章平均质量分 55
算法
数据结构
RwTo
这个作者很懒,什么都没留下…
展开
-
二分查找及相关题解析(Java)
二分查找,又称折半查找法基本思路:举一反三当有序序列可重复,且需要寻找的元素在序列中有多个时,依据普通的二分查找,找到的元素是随机的。问题1: 如何找到第一个出现的元素?问题2: 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。来自leetcode 题目链接分析:...原创 2022-06-11 23:38:50 · 255 阅读 · 0 评论 -
数据结构之二叉搜索树(二叉搜索树的构建,以及中序遍历,前序遍历,后序遍历,层序遍历)
树的相关术语**树的度:**树中所有结点的度的最大值**树的高度(深度):**树中结点的最大层次**结点的度:**一个结点含有的子树的个数称为该结点的度;**叶结点:**度为0的结点称为叶结点,也可以叫做终端结点**分支结点:**度不为0的结点称为分支结点,也可以叫做非终端结点**结点的层次:**从根结点开始,根结点的层次为1,根的直接后继层次为2,以此类推**孩子结点:**一个结点的直接后继结点称为该结点的孩子结点**双亲结点(父结点):**一个结点的直接前驱称为该结点的双亲结点**兄原创 2020-10-05 11:44:23 · 714 阅读 · 1 评论 -
堆排序
堆排序排序原理这里做升序排序,用大顶堆构造堆;得到堆顶元素,这个值就是最大值;交换堆顶元素和数组中的最后一个元素,此时所有元素中的最大元素已经放到合适的位置;对堆进行调整,重新让除了最后一个元素的剩余元素中的最大值放到堆顶;重复2~4这个步骤,直到堆中剩一个元素为止。...原创 2020-10-04 20:24:51 · 731 阅读 · 3 评论 -
八大排序之归并排序(建议与快排一起看)
归并排序排序原理:尽可能的将一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是1为止。将相邻的两个子组进行合并成一个有序的大组;不断的重复步骤2,直到最终只有一个组为止。对最后合并细化分析,核心代码MergeJava代码import java.util.Arrays;public class MergeSort { private static int[] arr; public static void sort(int[]原创 2020-10-02 15:52:22 · 3273 阅读 · 1 评论 -
八大排序之快速排序(面试考试必问!!!)
快速排序快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。排序原理:分治思想以数组第一个数为分界值,通过该分界值将数组分成左右两部分;将大于或等于分界值的数据放到到数组右边,小于分界值的数据放到数组的左边。此时左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值;然后,左边和右原创 2020-10-02 11:29:10 · 1192 阅读 · 2 评论 -
八大排序之希尔排序
希尔排序(shell排序)希尔排序是插入排序的一种,又称缩小增量排序。是改进版的插入排序排序原理:选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;对分好组的每一组数据完成插入排序;减小增长量,最小减为1,重复第二步操作。Java代码import java.util.Arrays;public class ShellSort { public static void sort(int[] a){ //确定初始的增量 int h原创 2020-10-01 11:09:31 · 10417 阅读 · 0 评论 -
八大排序之简单插入排序
简单插入排序排序原理:把所有的元素分为两组,已经排序的和未排序的;找到未排序的组中的第一个元素,向已经排序的组中进行插入;倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位。对第五趟排序分析每一次插入,相当于取最小的冒泡排序,区别在于这是冒泡的最小的数。java代码import java.util.Arrays;public class InsertSort { public st原创 2020-09-30 22:15:06 · 883 阅读 · 1 评论 -
八大排序之简单选择排序
简单选择排序排序原理:每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引出的值为最小值,最后可以找到最小值所在的索引交换第一个索引处和最小值所在的索引处的值简单来说,就是对于未排序的数组,选择其中最小的数,放在最前面。java代码import java.util.Arrays;public class SelectSort { public static void sort(int[]原创 2020-09-30 21:31:45 · 871 阅读 · 0 评论 -
八大排序之冒泡排序(必学排序算法)
冒泡排序排序原理比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。以第一次冒泡为例简单来说,每一次冒泡就是找到未排序数组中的最大值,并放到最后的位置。Java代码import java.util.Arrays;public class MaoPao { public static void sort(int[] a){ //需要冒泡的次数原创 2020-09-30 20:42:28 · 1064 阅读 · 0 评论