
数据结构
楠哥学IT
一心想为IT行业添砖加瓦,却总是面向cv编程的程序员
展开
-
马踏棋盘(骑士周游问题)
马踏棋盘(骑士周游问题)一、马踏棋盘概述二、马踏棋盘思路三、马踏棋盘代码实现(java)四、马踏棋盘代码实现(C) 一、马踏棋盘概述 (1)马踏棋盘算法也被称为骑士周游问题 (2)玩法:将马随机放在国际象棋的8×8棋盘Board[0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格 关于马的走法: 二、马踏棋盘思路 1、马踏棋盘问题(骑士周游问题)实际上是图的深度优先搜索(DFS)的应用。 2、解决步骤与思路: (1)创建棋盘(chessBoard),原创 2020-09-04 20:31:06 · 1759 阅读 · 1 评论 -
基本常用查找算法思路及实现(C,java)
基本常用查找算法思路及实现一:基本常用查找算法介绍 1、顺序(线性)查找 2、二分查找/折半查找 3、插值查找 4、斐波那契查找二:顺序(线性)查找算法 1、顺序查找概述 2、顺序查找代码实现(java) 3、顺序查找代码实现(C)三:二分查找/折半查找 1、二分查找/折半查找思路 2、二分查找代码实现(java) 4、二分查找代码实现(C) 一:基本常用查找算法介绍 1、顺序(线性)查找 2、二分查找/折半查找 3、插值查找 4、斐波那契查找 二:顺序(线性)查找算法 1、顺序查找概述 顺序原创 2020-09-04 18:44:26 · 1330 阅读 · 0 评论 -
利用二叉排序树进行排序
1、二叉排序树简要概述 二叉排序树:BST:(BinarySort(Search)Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。 注意:如果有相同的值,可以将该节点放在左子节点或右子节点。 2、二叉排序树图示 对于数据(7,3,10,12,5,1,9),对应的二叉排序树为: 3、二叉排序树进行排序基本思路 (1)先将要排序的数构建成一个二叉排序树。 (2)对该二叉排序树进行中序遍历即可得到按升序排列的数。 4、java代原创 2020-09-02 12:55:30 · 2670 阅读 · 1 评论 -
排序算法总结---C语言
排序算法总结---建议收藏排序算法概述一:冒泡排序(Bubble Sort) 1、冒泡排序简要概述 2、冒泡排序图解 3、代码实现二:选择排序(Select Sort) 1、选择排序简要概述 2、选择排序图解 3、代码实现三:插入排序(Insert Sort) 1、插入排序简要概述 2、插入排序图解 3、代码实现四:希尔排序(Shell Sort) 1、简单插入排序存在的问题 2、希尔排序简要概述 3、希尔排序图解五:快速排序(Quick Sort) 1、快速排序简要概述 2、快速排序图解 3、代码实现六:原创 2020-08-29 20:43:52 · 1381 阅读 · 0 评论 -
数据结构----排序算法总结(Java)
排序算法总结---建议收藏排序算法概述一:冒泡排序(BubbleSorting) 1.冒泡排序简要概述 2.冒泡排序图解 3.代码实现 排序算法概述 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。 一:冒泡排序(BubbleSo原创 2020-08-29 18:22:19 · 2137 阅读 · 1 评论 -
数据结构排序-------基数排序(C,Java实现)
1、基数排序简要概述 (1)基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucketsort)或binsort,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。 (2)将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。 2、基数排序图解 注意:先判断有无负数,有负数时处理思路:有则找到最小值原创 2020-08-29 18:13:06 · 307 阅读 · 0 评论 -
数据结构排序-------归并排序(C,Java实现)
1、归并排序简要概述 (1)归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 2、归并排序图解 治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,原创 2020-08-29 18:10:57 · 181 阅读 · 0 评论 -
数据结构排序-------堆排序(C,Java实现)
1、堆排序简要概述 它的基本思想是:第一次从arr[0]到arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]到arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]到arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1]到arr[n-1]中选取最小值,与arr[i-1]交换,…,第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n-2]交换, 总共通过n-1次,得到一个按排序码从小到大排列的有序序列。 2、选择排序图原创 2020-08-29 18:10:02 · 345 阅读 · 0 评论 -
数据结构排序-------快速排序(C,Java实现)
1、快速排序简要概述 (1)快速排序(Quicksort)是对冒泡排序的一种改进。 (2)基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 2、快速排序图解 3、代码实现 public class test { public static void main(String[] args) { int arr原创 2020-08-29 18:05:33 · 375 阅读 · 0 评论 -
数据结构排序-------希尔排序(C,Java实现)
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、希尔排序简要概述 (1)它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 (2)希尔排序是把记录按下标的一定增量分组,对每组使用原创 2020-08-29 18:04:35 · 333 阅读 · 0 评论 -
数据结构排序-------插入排序(C,Java实现)
1、插入排序简要概述 它的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 2、插入排序图解 3、代码实现 public class test { public static void main(String[] args) { int array[] = new原创 2020-08-29 18:02:28 · 281 阅读 · 0 评论 -
数据结构排序---------选择排序(C,Java实现)
二:选择排序(select sorting) 1、选择排序简要概述 它的基本思想是:第一次从arr[0]到arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]到arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]到arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1]到arr[n-1]中选取最小值,与arr[i-1]交换,…,第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n-2]交换, 总共通过n-1次,得到一个按原创 2020-08-29 18:00:44 · 300 阅读 · 0 评论 -
数据结构排序-------冒泡排序(C,Java实现)
一:冒泡排序(BubbleSorting) 1、冒泡排序简要概述 冒泡排序(BubbleSorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部。 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。 2、冒泡排序图解 总结: (1)一共进行(数组的大小-1)次大的循环原创 2020-08-29 17:59:27 · 253 阅读 · 0 评论