自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 稀疏数组

稀疏数组的使用

2019-08-31 22:18:47 201

原创 如何仅用栈结构实现队列结构

文章目录一、题目二、解题思路三、代码实现(Java)一、题目如何仅用栈结构实现队列结构?二、解题思路栈:先进后出。队列:先进先出。定义两个栈:push 和 pop。进队列:只要出现新的数据,就压入 push 栈中。出队列:如果 push 栈和 pop 栈都为空,报错。如果 pop 栈为空并且 push 栈中有数据,就将 push 中的所有数据都倒入 pop 栈中,然后弹...

2019-01-19 15:20:06 315

原创 如何仅用队列结构实现栈结构

文章目录一、题目二、实现思路三、代码实现(Java)一、题目如何仅用队列结构实现栈结构?二、实现思路定义两个队列,Data 和 Help。压栈:只要有新数据,就压入 Data 队列。出栈:如果 Data 队列为空。报错。如果 Data 队列中的元素数量大于 1,就将Data 队列中的数据倒入 Help 队列,直到 Data 队列只剩一个数据。将 Data 队列剩下的数据出队并作...

2019-01-19 14:27:39 279

原创 栈相关题目

文章目录一、题目二、解题思路三、代码实现(Java)一、题目实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。要求:pop、push、getMin 操作的时间复杂度都是 O(1)。设计的栈类型可以使用现成的栈结构。二、解题思路定义两个栈,Data 和 Min。push 操作:Data 栈:将新来的数据压进 Data 栈。Min 栈:如果 Min ...

2019-01-19 11:13:22 539

原创 用数组结构实现大小固定的队列和栈

一、题目用数组结构实现大小固定的队列和栈。二、解题思路(一)、用数组结构实现大小固定的栈。栈结构是“先进先出”,有入栈、出栈、返回栈顶等功能,题目大意就是要求我们用数组实现栈的这些功能。数组的大小也就是栈的大小。定义一个 size ,初始化为 0,用来跟踪栈中的元素数量。入栈:只要 size 小于栈的大小,将要入栈的数放入数组的 size 位置上,size 加 1。出栈:只要 si...

2019-01-18 11:45:41 498

原创 求相邻两数的最大差值。

文章目录一、问题二、解题思路。三、代码实现(Java)一、问题给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。二、解题思路。已知数组长度为 n。遍历数组,找到整个数组中元素的最大值 max 和最小值 min 。根据找到的 max 和 min,将数组均匀划分为 n + 1 个范围。遍历数组,根据每个数组元素的值,判断进入对应的范...

2019-01-17 19:08:41 1243

原创 堆结构与堆排序

文章目录一、堆的定义二、堆的分类三、如何用数组模拟堆结构四、怎么将数组(堆)调成大根堆五、堆排序(一)、堆排序的实现理论(二)、堆排序的代码实现(三)、堆排序的时间复杂度一、堆的定义堆其实就是一颗完全二叉树。先说满二叉树,满二叉树就是除了最后一层结点没有孩子,其余的的节点都有左孩子和右孩子。完全二叉树包含满二叉树,也就是说完全二叉树是每个子树的孩子是从左往右补齐的。一颗满二叉树同时也是一颗...

2019-01-14 19:19:11 258

原创 经典快速排序与随机快速排序

文章目录一、经典快速排序(一)、经典快速排序的实现理论(二)、经典快速排序的代码实现(Java)(三)、经典快速排序的时间复杂度二、随机快速排序(一)随机快速排序的实现理论(二)随机快速排序的代码实现(Java)(三)、随机快速排序的时间复杂度一、经典快速排序(一)、经典快速排序的实现理论经典快速排序是用数组的最后一个数(这里记为 x )进行划分。也就是 <x、=x、>x。有...

2019-01-13 20:55:19 2652

原创 逆序对问题

文章目录一、问题二、解题思路三、代码实现(Java)一、问题在一个数组中,左边的数如果比右边的数大,则折两个数构成一个逆序对,请打印所有逆序对。二、解题思路可以使用归并排序来帮助我们解决逆序对问题。归并排序的实现我们只需要在归并排序中加上一个操作:当左部分的数(arr[p1])大于右部分的数 (arr[p2]) 时,打印在当前数组左半部分 p1 指向的数以及它后面的数和 arr[p2] ...

2019-01-11 19:54:10 394

原创 小和问题

文章目录一、问题二、解题思路三、代码实现(Java)一、问题小和问题在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数的小和。求一个数组的小和。例子:[1, 3, 4, 2, 5]1 左边的数比 1 小的数:没有;3 左边的数比 3 小的数:1;4 左边的数比 4 小的数:1、3;2 左边的数比 2 小的数:1;5 左边的数比 5 小的数:1、3、4、2;所以这个数...

2019-01-11 18:00:15 238 1

原创 归并排序

文章目录一、实现理论二、代码实现(Java)一、实现理论有一个长度为 n 的数组。将数组分为两个部分,左半部分和右半部分。将左半部分排好序。将右半部分排好序。此时数组整体还是无序的。定义一个辅助数组。定义两个变量,分别用来表示左半部分的最小的数和右半部分的最小的数的下标。比较这两个变量对应的数组中的数,哪个数较小,就将这个数放入辅助数组中,然后将此变量加 1 (指向这半部分的下一...

2019-01-09 18:29:15 164

原创 递归

文章目录一、实现理论二、代码实现(Java)一、实现理论我们以求数组中的最大值为例,解题思路为:将数组分成两部分。求左半部分的最大值 maxLeft。求右半部分的最大值 maxRight。求 maxLeft 和 maxRight 中的最大值。这其中就用到了递归的思想:递归其实就是分治的思想,我画了一个简单的图:二、代码实现(Java)求数组中的最大值public clas...

2019-01-08 14:42:17 172

原创 插入排序

文章目录一、实现理论二、代码实现(Java)三、时间复杂度一、实现理论有一个长度为 n 的数组位置 0 和位置 1 进行比较,如果前一个数大于后一个数,交换两个数的位置。否则不交换,继续步骤 3。位置 1 和 位置 2 进行比较,如果前一个数大于后一个数,交换两个数的位置,然后 位置 1 上的数发生变化,需要重新进行步骤 2。否则不交换。继续比较,直到数组全部有序。二、代码实现(J...

2019-01-08 12:17:36 143

原创 选择排序

文章目录一、实现理论二、代码实现三、时间复杂度一、实现理论有一个长度为 n 的数组。在 0 到 n-1 个数中找到最小的,放到位置 0,0 位置的就是有序的。在 1 - 到 n -1 个数中找到最小的,放到位置 1,0 到 1 的位置就是有序的。继续比较,直至数组中的所有数都有序。二、代码实现 public static void selectionSort(int[] arr)...

2019-01-08 11:02:46 136

原创 冒泡排序

一、实现理论如果有一个数组。一次进行两个数、两个数的比较,前一个数大于后一个数就交换,然后循环这个过程。(不管第 n-1 个数)(每一次都找到最大的)。两个数、两个数的比较,前一个数大于后一个数就交换,然后循环这个过程。(不管第 n-1 个数)(每一次都找到最大的)。代码( java 代码): public static void bubbleSort(int[] array) ...

2019-01-06 22:49:39 157

空空如也

空空如也

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

TA关注的人

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