![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 69
放肆的青春゛つ
做最好的自己---在校生一枚,写博客作为复习巩固,有错还请指教
展开
-
LeetCode算法之数组篇
练习数组算法题,得先了解数组的常用操作,只要熟悉这些操作才可以更好刷题。①创建数组Java语言中至少有四种创建数组,这里就介绍四种常用的。int [] nums = {1,3,5,7};int [] a = new int []{1,2,3,4};int [] a = new int [4]; //再添加ArrayList<Integer> a = new ArrayList<>();//add添加元素②添加元素a.add(9);直接添加原创 2021-05-19 17:43:55 · 357 阅读 · 3 评论 -
插入排序算法
1、排序原理插入排序是一种简单直观且稳定的排序算法。插入排序的工作非常类似人们一手抓牌,一手插入,并且按顺序插入对应的位置。接下来说明排序原理:把所有元素分为两组,一组已经排序的和没有排序的 找到没有排序的第一个元素插入已经排序组中 倒序遍历已经排序的元素,依次和待插入的元素进行比较,直到找到第一个元素小于等于插入元素,那么就把待插入的元素插入到这个位置,其他元素向后移动一位。是不是没怎么听懂,来一张动态图演示过程:2、算法分析过程3、Java代码实现impo原创 2021-05-13 19:11:04 · 148 阅读 · 0 评论 -
希尔排序算法
希尔排序(Shell sort)是插入排序的一种又称"缩小增量排序",是直接插入排序算法的一种更高率的改进版本。希尔排序是非稳定算法。为什么不稳定呢?举例子:3 5 10 8 7 2 8 1 20 6 现在d=2(3 10 7 8 20)和(5 8 2 1 6),原本相同的数据(如两个8,可以记为 8' ,8")但是经过排序后变成(8",8')不稳定的意思不是出错的意思。1、排序原理选定一个增量h(一般是数组长度的一半),按照增量h作为数据分组的依据,...原创 2021-05-14 00:07:41 · 2467 阅读 · 2 评论 -
归并排序算法
归并排序:是采用分治法的一个非常典型的应用,将已有序的子序列合并,得到完全有序的序列;先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。1、排序原理尽可能将一组数据拆成两个元素相同的子组,并对每一个子组继续拆分,直到每个子组的元素个数是1为止 将相邻的两个子组进行合并成一个有序的大组 不断的重复步骤2,直到最终只有一个组为止动态演示过程:2、算法分析过程图析详细过程:在治的过程详细分析:是如何具体归并的?第一次填充:p1指针指向4,p原创 2021-05-15 12:01:04 · 378 阅读 · 0 评论 -
快速排序算法
快速排序是对冒泡排序的一种改进。基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小;再对两部分数据进行快速排序,来达到整个数据变成有序的。1、排序原理首先定一个分界值,通过该分界值将数据分为两部分 将大于或等于分界值的数据放在右边,小于分界值的数据放到数组的左边。 左右的数据可以独立排序,左侧的数据又可以确定一个分界值又分成两部分。右侧的数据也是确定一个分界值又分成两部分..... 重复上述操作过程来一张快速排序的动态图看看效果:原创 2021-05-15 16:12:08 · 170 阅读 · 0 评论 -
Java数据结构之顺序表及实现
线性表(linear_list)是最常用且最简单的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。1、线性表相关概念前驱元素:一个A元素在B元素的前面,则称A是B的前驱元素。后继元素:若B元素在A元素的后面,则称B为A的后继元素。线性表的特征:第一个数据元素没有前驱,这个数据元素被称为头结点。 最后一个数据元素没有后继,这个数据元素被称为尾结点。 除了第一个和最后一个数据元素外,其他的数据元素都有一个前驱和一个后继。2、线性表的分类线性表中的数据存储方式可以是顺原创 2021-05-15 23:26:09 · 340 阅读 · 1 评论 -
选择排序算法
1、排序原理每一次遍历的过程中,都假定第一个元素的索引为最小值,和其他索引处的值依次比较,如果当前索引处的值大于其他处索引处的值,就把其他处索引值记录下来(保存到min_index中),它再和后面其他索引处的值进行比较,最后比较得出最后的最小值所在的索引值。 交换第一个索引处和最小值所在的索引处的值。可能听完也不知道讲了什么,不是非常清楚过程,那么来一张动态过程图:2、算法的伪代码for ito n-2 do mini for ji+1 to...原创 2021-05-13 17:09:28 · 97 阅读 · 0 评论 -
冒泡排序算法
冒泡排序1、排序原理:比较相邻的元素,如果前一个元素比后面的元素大,就交换这两个元素的位置 每一对相邻元素做同样的工作,最终最后位置的元素就最大\最小2、算法分析过程:拿一个数组样例做分析:[89,45,68,90,29,34,17]后面的过程都和第一次一样的过程,最后所有的冒泡结果如下图:N个数字要排序完成,总共进行N-1趟排序,每一趟的排序次数为N-i次,外层循环控制多少趟,内层循环控制每一趟排序次数。3、Java代码实现public class Bubble.原创 2021-05-13 11:28:14 · 231 阅读 · 1 评论