自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法与数据结构(归并排序)

归并排序 Merge Sort利用分治策略来解决排序问题分治法 Divide and Conquer:分:将大问题分成一些小的问题然后分别求解;治:将求出来的答案组合到一起,形成最初问题的答案归并排序的思路:归并排序的基本思路是先将序列分为两部分,让左右两部分分别有序,然后合并。但是左右两部分的排序又重复上述过程,不断地分裂成两部分,直到最终都只有一个元素,此时所有的数组都是有序...

2020-04-29 21:16:48 340

原创 算法与数据结构(快速排序)

快速排序 Quick Sort快速排序是对冒泡排序的一种改进通过一趟排序将序列分为两个部分,其中一个部分的所有数据比另一个部分的所有数据都小,然后再分别对两个部分进行类似操作(递归),直到整个序列有序基本思路:随机找出一个数,或是取第一个或最后一个数为基准。然后将所有的数和基准比较,比基准小,就放左边,比基准大就放右边,这样就把一个序列分成了两个子序列。然后按照同样的方法对子序列排序...

2020-04-29 21:11:55 241

原创 算法与数据结构(希尔排序)

希尔排序 Shell’s Sort我们都知道直接插入排序对有序度高的列表排序效率是比较高的。而当列表为倒序时,最后一位元素的值是最小的,直接插入排序会进行 n-1 次比较才能找到正确的位置。这种情况下直接插入排序的效率是很低的希尔排序是改进的直接插入排序,也称为缩小增量排序希尔排序的基本思路:把列表元素按下表的一定增量分组,对每组分别使用直接插入排序这种做法成功的把大规模的有序度较...

2020-04-29 21:05:30 154

原创 算法与数据结构(冒泡排序,选择排序和插入排序的总结)

冒泡排序,选择排序和插入排序的总结在规模较小时,或者元素的有序性较高时,插入排序的时间复杂度可以接近 O(n) ,是上述三种排序里表现最好的一、通过表格我们可以发现,冒泡排序的时间复杂度是要优于选择排序的,但实际上选择排序的平均效率要优于冒泡排序冒泡排序的思想是不断比较相邻元素大小,如果逆序,就需要不断的交换位置,也就是说在冒泡排序的一次子循环中,可能需要进行多次交换操作选择排序的思想...

2020-04-29 21:02:03 319

原创 算法与数据结构(插入排序)

插入排序 Insertion Sort类似选择排序,构建有序列表,默认原无序列表第一位在有序列中,将无序列表(已除去原第一位)的第一位元素插入到有序列表的相应位置,不断重复直到无序列表为空和选择排序的区别:选择排序是首先在无序表中找到最小值,放到有序表的最后一位插入排序是将无序列表的第一位取出,排序后放入有序列表中实现:首先将原列表的第一位当作有序列的第一位,然后从原列表的第二...

2020-04-29 20:56:00 175

原创 算法与数据结构(选择排序)

选择排序 Select Sort从待排序序列中选出最小(或最大)元素,放入新建的有序序列中,并将其从原无序序列移除。不断重复直到无序序列最终没有元素剩余选择排序规则:总共要进行 n-1 次循环每一轮循环中又嵌套了一层循环–从第一个元素遍历到最后一个,找出最小元素实现:从无序序列中找到最小元素,将其和无序序列首位的元素交换(此时首位元素属于有序序列,剩下的元素属于无序序列)...

2020-04-29 20:53:23 143

原创 算法与数据结构(冒泡排序)

冒泡排序 Bubble Sort对序列从前向后,不断比较两个相邻元素的大小,如果逆序,则交换位置,使值较大的元素逐渐从前向后移动,就像水底的气泡向上浮一样冒泡排序规则:一共会进行 n-1 次循环每一趟循环排序的次数在减少有序序列是从队尾向队首延伸如果发现在某次循环中没有发生任何一次交换,可以提前结束排序实现:第一次循环:从第一位开始,遍历到最后一位第二次循环:从第一位开...

2020-04-29 20:50:08 249

原创 算法与数据结构(排序算法概述)

排序算法 Sort Algorithm排序算法是将一系列数据根据指定的顺序进行排列的过程排序算法的分类:内部排序:指将需要处理的所有数据都加载到内存中进行排序插入排序直接插入排序希尔排序选择排序简单选择排序堆排序交换排序冒泡排序快速排序归并排序基数排序外部排序: 数据量过大,需要借助外部存储器来排序对排序算法来说,一般有两种基本操作:...

2020-04-29 20:49:31 157

原创 算法与数据结构(Java解八皇后问题)

递归 Recursion简单的说,递归就是方法自己调用自己,每次调用时传入不同的变量递归有助于解决复杂的重复度高的问题,并使代码变得简洁递归调用规则:每当程序执行一个方法时,就会开辟一个独立的空间(栈)每个空间的数据(局部变量)是独立的如果在递归中使用引用变量,那么引用变量的数据会被共享递归遇到 return 或 将方法执行完毕就会返回,遵循谁调用谁返回原则递归必须向退出递归...

2020-04-29 20:42:25 173

原创 算法与数据结构(约瑟夫问题)

单向环形链表 Circular Linked List单向环形链表和单链表类似,只是最后一位节点不再指向 null,而是指向 head(如果有头节点的话)或是第一位节点(如果没有头节点)图示:构造方式和单向链表类似,只是最后一位节点指向第一位节点...

2020-04-29 20:22:26 185

原创 Java实现单链表

单链表 Single Linked List链表是有序的列表,每个节点包括一个数据元素(data)和指向下一个节点的地址(next)链表的各个节点不一定是连续存储在内存中图示:head节点不存放具体数据,作用是表示单链表表头对于链表来说,最关键的是要定义节点: class Node{ public int no; public String cont...

2020-04-29 20:09:41 263

原创 算法与数据结构(稀疏数组)

稀疏数组 Sparse Array当一个数组中有大量元素相同时,可以用稀疏数组来表示,通过将有用信息记录在小规模的数组中来缩减程序规模原数组:[0000102000300000004000000023000]\left[\begin{matrix}0 & 0 & 0 & 0 & 1 \\0 & 2 & 0 & 0 &...

2020-04-29 19:02:53 183

原创 一、【绪论】数据结构的基本概念

简述 Abstract数据结构可分为线性数据结构和非线性数据结构线性结构:最常用的数据结构,其特点是数据元素之间存在一对一的线性关系2. 线性结构又两种不同的数据存储结构:顺序存储和链式存储。顺序存储中的元素一定是连续的;链式存储的元素不一定连续,元素节点中存放数据元素和相邻元素的地址信息常见的线性结构有:数组、队列、链表和栈非线性结构:非线性结构包括:二维数组、多维数......

2020-04-29 18:58:30 537 1

原创 Modular Arithmetic 模算术

Modular Algorithm 模运算

2020-04-11 11:05:50 3028

空空如也

空空如也

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

TA关注的人

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