![](https://img-blog.csdnimg.cn/2020030315272862.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
数据结构与算法
我是陈旭原
生命不息 运动不止
展开
-
【查找算法】- 二分查找算法
文章目录1 小案例2 二分查找算法的思路二分查找的代码 1 小案例 请对一个有序数组进行二分查找{1,8,10,89,1000,1234},输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。 2 二分查找算法的思路 二分查找的代码 说明:增加了找到所有的满足条件的元素下标: 课后思考题:{1,8,10,89,1000,1000,1234}当一个有序数组中,有多个相同的数值时,如何将所有的数值都查找到,比如这里的1000。 package com.sukang.searc原创 2020-11-11 14:17:01 · 410 阅读 · 0 评论 -
【排序算法】- 归并排序
文章目录1 归并排序介绍:2 归并排序思想示意图1-基本思想:3 归并排序思想示意图2-合并相邻有序子序列:4 归并排序的应用实例: 1 归并排序介绍: 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 2 归并排序思想示意图1-基本思想: 3 归并排序思想示意图2-合并相邻有序子序列:原创 2020-11-11 13:12:01 · 343 阅读 · 1 评论 -
【排序算法】- 快速排序
文章目录1 快速排序法介绍:2 快速排序法示意图:3 快速排序法应用实例: 1 快速排序法介绍: 快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行 ,以此达到整个数据变成有序序列 2 快速排序法示意图: 3 快速排序法应用实例: 要求:对[-9,78,0,23,-567,70]进行从小到大的排序,要求使用快速排序法。【测试原创 2020-11-11 10:01:58 · 169 阅读 · 0 评论 -
【排序算法】- 希尔排序
文章目录1 简单插入排序存在的问题2 希尔排序法介绍3 希尔排序法基本思想4 希尔排序法的示意图5 希尔排序法应用实例: 1 简单插入排序存在的问题 我们看简单的插入排序可能存在的问题。 数组arr={2,3,4,5,6,1}这时需要插入的数1(最小),这样的过程是: {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5,6} {1,2,3,4,5,6} 结论:当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响。 2原创 2020-11-09 12:29:53 · 320 阅读 · 1 评论 -
【排序算法】- 插入排序
文章目录1 插入排序法介绍:2 插入排序法思想:3 插入排序思路图:4 代码实现: 1 插入排序法介绍: 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 2 插入排序法思想: 插入排序(InsertionSorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成原创 2020-07-10 08:21:50 · 140 阅读 · 0 评论 -
【排序算法】- 选择排序
文章目录1 基本介绍2 选择排序思想3 选择排序思路分析图4 代码示例 1 基本介绍 选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。 2 选择排序思想 尚硅谷Java数据结构和算法更多Java–大数据–前端–python人工智能-区块链资料下载,可访问百度:尚硅谷官网第128页选择排序(selectsorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]ar原创 2020-07-08 09:15:08 · 145 阅读 · 0 评论 -
【排序算法】- 冒泡排序
文章目录1 基本介绍2 演示冒泡过程的例子(图解)3 冒泡排序应用实例 1 基本介绍 冒泡排序(BubbleSorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 优化: 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好原创 2020-07-07 10:36:36 · 125 阅读 · 0 评论 -
【数据结构java篇】- 栈
文章目录1 栈的一个实际需求2 栈的介绍3 栈的应用场景4 栈的快速入门 1 栈的一个实际需求 请输入一个表达式 计算式:[722-5+1-5+3-3]点击计算【如下图】 请问:计算机底层是如何运算得到结果的?注意不是简单的把算式列出运算,因为我们看这个算式722-5,但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。->栈 2 栈的介绍 栈的英文为(stack)。 栈是一个先入后出(FILO-FirstInLastOut)的有序列表。 栈(stack)原创 2020-07-02 15:34:05 · 110 阅读 · 0 评论 -
【数据结构java篇】- 链表
文章目录1 链表(LinkedList)介绍2 单链表的应用实例3 单链表面试题(新浪、百度、腾讯)5 双向链表应用实例5.1 双向链表的操作分析和实现6 单向环形链表应用场景6.1 单向环形链表介绍6.2 Josephu问题 1 链表(LinkedList)介绍 链表是有序的列表,但是它在内存中是存储如下 小结上图: 链表是以节点的方式来存储,是链式存储 每个节点包含data域,next域:指向下一个节点 如图:发现链表的各个节点不一定是连续存储 链表分带头节点的链表和没有头节点的链表,根据实际的需求原创 2020-06-28 10:44:01 · 245 阅读 · 0 评论 -
【数据结构java篇】- 队列
文章目录1 队列的一个使用场景2 队列介绍3 数组模拟队列思路4、数组模拟环形队列 1 队列的一个使用场景 银行排队的案例: 2 队列介绍 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 示意图:(使用数组模拟队列示意图) 3 数组模拟队列思路 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图,其中maxSize是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量front原创 2020-06-12 10:21:39 · 118 阅读 · 0 评论 -
【数据结构java篇】- 稀疏数组
文章目录一个实际的需求基本介绍应用实例 一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能。 分析问题: 因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据.->稀疏数组。 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 稀疏数组举例说明 应用实例 使用稀疏数组,来保留类似前面的二维数组原创 2020-06-11 10:13:04 · 124 阅读 · 0 评论