数据结构与算法
文章平均质量分 59
数据结构与算法
izaogao
我很懒,还没有添加简介。
展开
-
基数排序的基本思想与模板分析【排序算法篇】
基本思想假如来了一个混乱数组org,我们需要将它排好序。我们做如下操作。先得到该数组中最大的那个数MAX。创建一个数组ans,该数组的长度就是MAX。接下来遍历混乱数组org,ans[org[i]]=org[i];。以上的操作很简单,我们可以轻易的看出其缺点就是太浪费空间。那么基数排序,则是对以上操作进行了优化。基数排序我们做如下操作。根据创建桶数组,其长度与混乱数组一致。接下来循环,第一轮是取每个数字的个位数,在桶数组对应位置+1。根据桶的个数生成位置。获取位置,更新原数组。.原创 2021-10-25 22:47:03 · 275 阅读 · 0 评论 -
堆排序 【排序算法篇】
升序:最大堆,降序:最小堆构造最大堆后,我们就知道了在当前无序区间里,最大的值是哪个,即堆顶元素,取出来放至有序区间,就像选择排序。那么如何构造最大堆or最小堆?::不断调整,最终形成 堆排序流程:1、初始化堆 2、获取堆顶元素,并移除它,重新构造堆图解以下动图均取自网络初始化最大堆:先从底层开始比较交换构建堆 自底向上自底向上自底向上调整最大堆:先从顶层开始比较交换构建堆 自顶向下自顶向下自顶向下代码模板(升序)public void get() {原创 2021-10-10 21:01:47 · 168 阅读 · 0 评论 -
归并排序思想与模板分析【排序算法篇】
主要思想:分治+合并合并两个有序数组为一个有序数组是一个非常容易的操作,我们基于此操作做以下处理。通过分治法,将原数组分出许多长度为2的数组在这些长度为2的数组中,我们将第一个数看作为一个有序数组,第二个数也看作为一个有序数组,将它们进行合并,很容易合并为一个有序数组,那么现在这些长度为2的数组也都是有序数组了。递归回来,我们将原数组分为了长度为4的数组,在这些数组的内部,分别有两个有序数组,将它们进行合并,那么这些长度为4发数组也都是有序数组了。如此类推……我们最终可使原数组变为有序.原创 2021-10-08 22:16:45 · 85 阅读 · 0 评论 -
快速排序思想与模板分析【排序算法篇】
java原创 2021-10-08 17:18:56 · 61 阅读 · 0 评论 -
shell 希尔排序【排序算法篇】
希尔排序此算法建立在插入排序上。首先,将要排序的数组,按照一定的增量分出子序列,我们对子序列利用插入排序算法排序。然后,增量=增量/2,在按照增量分出子序列,对它们进行排序。如此往复,直到增量=1时,意味着分不出子序列了,数组已经有序。增量可以看作子序列中各个节点的距离,以及子序列的个数。...原创 2021-10-07 18:39:11 · 176 阅读 · 0 评论 -
插入排序思想与模板分析【排序算法篇】
插入排序核心思想:假设前半个区间是有序的,那么我们将先取后半个区间的第一个值A(该数也可以说是有序区间的后面的那个数,也许这样更清楚),与前半个区间从后往前进行比较交换,找到A适合的位置停止比较交换即可。举例:【1、2、4、5、3、0】,建立升序数组已知:【1、2、4、5】这个区间有序,我们只需其考虑后面那个数【3】在有序区间的位置即可,具体流程如下:【1、2、4、5、3、0】原数组【1、2、4、5、3、0】将【3】与 它前面的数【5】进行比较,【3】小,交换,如下【1、2、4、3、5、0.原创 2021-10-07 15:15:18 · 125 阅读 · 0 评论 -
冒泡排序与选择排序【排序算法篇】
冒泡排序邻居根据规则交换,将较小的或较大的值沉下去,形成升序数组或降序数组。以下是升序数组的案例:public static void BubbleSort(int [] arr){ int temp;//临时变量 for(int i=0; i<arr.length-1; i++){ //表示趟数,一共arr.length-1次。 for(int j=0; j<arr.length-1-i; j++){ //每一趟,都将使当前区间.原创 2021-10-06 19:39:46 · 56 阅读 · 0 评论 -
二分查找的算法心得 【解决leetcode问题:x 的平方根】
java原创 2021-10-06 16:46:35 · 107 阅读 · 0 评论 -
【中序、后序遍历序列】【前序、中序遍历序列】构造二叉树
java原创 2021-09-29 20:30:39 · 377 阅读 · 0 评论 -
【java】回溯算法总结【解决leetcode题:单词搜索】
java原创 2021-09-05 11:28:39 · 179 阅读 · 0 评论 -
字符串与KMP算法
java原创 2021-08-13 00:14:18 · 158 阅读 · 0 评论 -
数组【双指针】、二维数组【矩阵】
java原创 2021-08-01 18:45:09 · 572 阅读 · 0 评论 -
二叉树遍历【前序、中序、后序、层序】【java实现】
java原创 2021-07-20 14:25:30 · 73 阅读 · 0 评论 -
栈 深度优先搜索(DFS)
数据结构推演出的深度优先搜索原创 2021-07-16 18:09:08 · 939 阅读 · 0 评论 -
递归强记
递归步骤1.、在方法中需递归几个,每个递归传递的值,以及对其返回值的处理。(深度优先,是将深处节点全访问了一遍后[因此可能有多个递归],再回过头访问较近的节点)2、结束条件(需思考全面,很多问题不止一个结束条件),以及当符合结束条件时,应该返回什么值。3、每次递归返回的值(注意是每次递归的返回值而不是符合结束条件时的返回值)力扣递归题爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?输入: 2输出: .原创 2021-07-06 10:36:02 · 60 阅读 · 0 评论 -
队列 广度优先搜索(BFS)
数据结构:推演出的广度优先搜索原创 2021-06-11 13:34:48 · 376 阅读 · 0 评论