自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 查找算法(线性查找、二分查找、插值查找、斐波那契查找)

查找算法查找算法:​ 线性查找、二分查找(折半查找)、插值查找、斐波那契查找1.线性查找:​ 逐一比对,循环遍历,发现有对应的值则返回下标索引,对序列是否有序没有要求。代码:public class seqSearch { public static void main(String[] args) { int[] arr = {1,9,11,-1,34,89}; int i = seqSearch(arr, 11); System.out

2022-01-05 11:55:22 235

原创 排序算法(归并排序)

归并排序介绍:​ 归并排序是建立在归并操作上的一种有效的排序算法,该算法是分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。需求:排序前:{8,4,5,7,1,3,6,2}排序后:{1,2,3,4,5,6,7,8}排序原理:1.尽可能的一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是 1为止。2.将相邻的两个子组进行合并成一个有序的大组;3.

2022-01-03 11:16:01 475

原创 排序算法(快速排序)

快速排序介绍:​ 快速排序是对冒泡排序的改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的数据都比另外一部分的所有数据要小,然后按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。​ 代码:public class quickSort { public static void main(String[] args) { int[] arr = {-9,78,0,23,-567,70}; q

2022-01-03 11:14:04 331

原创 排序算法(希尔排序)

希尔排序(shellSort)介绍:​ 希尔排序又叫缩小增量排序,是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减少至1时,整个数组恰好被分为一组,算法终止。缩小增量后可以采用两种排序法:交换(冒泡)、位移(插入) 后者效率更高。代码:public class shellSort { public static void main(String[] args) { int[] nums = {8,9,1,7,

2022-01-03 11:09:43 303

原创 排序算法(插入排序)

插入排序:时间复杂度:​ 最坏的情况(每次插入都遍历一遍已经排好序的数组):​ 外层循环n-1次,内层循环1+2+3+…+(n-2)=(n-2)(n-1)/2次​ 所以最坏情况是O(n^2)​ 按照代码,最好的情况(已经有序):O(n)​ 平均情况为:(n^2 + n)/2,因为二次函数比一元一次函数增长快,​ 所以为插入排序算法的时间复杂度为O(n^2)​ 简介:​ 基本思想:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1

2021-12-30 15:00:10 1540

原创 排序算法(选择排序)

​ 简介:​ 选择排序基本思想是:第一次从arr[0]-arr[n-1]中选出最小的元素,让它和arr[0]交换,第二次则从arr[1]-arr[n-1]中选出最小的元素和arr[1]交换…总共交换n-1次使得序列变成从小到大的有序序列。​ 优化:​ 在排序过程中可以加入标志位,当某次排序过程中,未发生元素交换,则说明此时序列已经是有序的了,则可以提前退出排序循环。代码实现public class selectSort { public static void main(String[

2021-12-30 14:58:34 478

原创 排序算法(冒泡排序)

冒泡排序​ 简介:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻的元素的值,若发生逆序则交换,使值较大的元素逐渐从前移向后部,就像水底的气泡逐渐向上冒。时间复杂度:O(n^2)​ 优化:排序过程中各元素会不断地接近自己的位置,如果一趟比较下来没有进行过交换,则说明序列此时已经有序了,因此在排序过程中我们可以添加标志位flag,判断元素是否发生交换,如果未发生交换则可以提前结束排序。public class bubbleSort { public static void main

2021-12-29 08:47:17 92

原创 递归-八皇后问题(回溯算法)

递归-八皇后问题(回溯算法)1.概述:​ 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列 或同一斜线上,问有多少种摆法。2.示意图上图为八皇后问题的其中一种解法3.步骤:1.第一个皇后先放第一行第一列​ 2.第二个皇后放在第二行第一列,然后判断是否成立,如果不成立,继续放在第二列、第三列、第四…​ 依次把所有的的列放完,直到找到一个满足的解​ 3.继续放第三、第四…个皇后,直到所有的皇后全部放在了不冲突的位置,得到了一个正确的

2021-11-23 16:25:13 519

原创 数据结构与算法之递归

递归1.递归应用场景:​ 迷宫回溯问题,递归(rescursion)2.递归的概念:​ 简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得更简洁。3.递归调用机制:​ 1.打印问题:public static void test(int n) { if (n >= 2) { test(n - 1); //运行到此处会将方法递归调用完,最后才会进行下面的打印输出操作 (所以打印结果

2021-11-21 09:49:04 394

原创 数据结构与算法之双向链表

数据结构与算法之双向链表- 管理单链表的缺点分析:单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单链表不能自我删除,需要靠辅助节点,而双向链表则可以自我删除图解:代码实现:创建一个节点的类/** 创建一个节点的类** */class HeroNode2{ public int no; public String name; public HeroNode2 next; //指向下一个节点 默认为null publi

2021-09-29 22:05:31 63

原创 数据结构与算法之单链表

**数据结构与算法之链表 **1.稀疏数组和队列​ 基本介绍:​ 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组。稀疏数组的处理方法:记录数组一共又几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模稀疏数组案例:4.二维数组转稀疏数组的思路遍历原始的二位数组,得到有效数据的个数sum根据sum就可以创建稀疏数组 sparseArray[sum+1][3]将二维数组的有效数据存入到稀疏

2021-09-27 21:05:38 118 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除