![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法和数据结构
数据结构和算法
倔强的码字员
这个作者很懒,什么都没留下…
展开
-
基数排序原理及其实现
1.基数排序原理基数排序就是利用桶的概念按照位数进行排序按照个位数上面的值,将元素放入不同的桶中,等数组全部放入完毕,再将所有元素按照桶的顺序依次取出,再按照十位数上面的值进行桶分布,直到最大位数分布完毕,则第一个桶就是排完序的数组2.实现方法第一种写法相对容易的一种方法public static int[] cardinalitySort(int[] arr){ //获取最大值 int maxLength = maxLength(arr);.原创 2020-07-09 20:08:59 · 1357 阅读 · 3 评论 -
快速排序思想和实现(面试考点)
1.快速排序原理今天介绍快速排序,快速排序是原创 2020-07-08 20:53:28 · 188 阅读 · 0 评论 -
八大排序算法——希尔(shell)排序(动图演示 思路分析 实例代码java 复杂度分析)
一、动图演示二、思路分析希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素进行比较,移动,插入,比如[5,4,3,2,1,0]这种倒序序列,数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。 而希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组..转载 2020-07-06 20:00:51 · 783 阅读 · 0 评论 -
插入排序原理及实现思路
1.插入排序原理插入排序其实就是拿未排序数组中的第一个值,插入到已排序完中的数组的合适位置,来完成排序图中的黄色部分为我们已经排好序的数组部分图中的红色部分为未排好序数组中的第一个值图中的蓝色部分为未排序的数组部分2.实现思路1.我们开始默认数组的第一个元素为已经排好序的数组,整个数组为A2.未排序数组中的第一个元素拿出来,我们假设下标为n,与排序数组的第i个比较 如果该数组A[n]<A[i],则该元素位于i+1这个下标位置,相当于这个将大的数...原创 2020-07-05 21:30:44 · 1685 阅读 · 0 评论 -
选择排序原理及思路
1.选择排序原理话不多说,直接上图图中的黄色部分为我们已经排好序的数组部分图中的红色部分为未排好序数组中遍历过的最小值图中的蓝色部分为未排序的数组部分2.思路遍历数组中未排序的部分,取出最小值,和未排序的第一个交换位置,然后重复此操作代码如下/** * 选择排序 */ public static int[] selectionSort(int[] arr){ //临时变量,用于临时存放 int temp;原创 2020-07-05 20:35:54 · 3408 阅读 · 0 评论 -
单调栈,力扣题解-」更大元素 II
1.栈的简介栈是一种先进后出的数据结构,工作中我们很少用到这种数据结构,我了解到的只有jvm底层调用方法栈的时候有用到,其实我们java递归方法就是栈的一种应用。由于最近在学数据结构和算法,小老弟我就去力扣上面做了几道栈的算法题,没做几道就把小老弟我难住了,题目如下2.栈的应用给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。原创 2020-07-01 14:20:26 · 134 阅读 · 0 评论 -
利用数组实现队列
1.简介队列是一个有序列表,属于线性结构的一种,遵循先进先出原则标使用数组模拟队列示意图题2.数组模拟队列第一种实现思路标使用数组模拟队列示意图题如上图所示,MaxSize为我们数组的长度,rear为我们末尾指针,front为我们的头指针,当我们向队列中放数据的时候,我们的rear指针不断向后移动,取数据的时候,front指针向后移动这样看我们需要四个参数1.最大容量maxSize2.头指针,front3.尾指针,rear4.数组,queue啥时候数...原创 2020-06-28 16:30:00 · 582 阅读 · 2 评论