数据结构
文章平均质量分 73
deDamon
这个作者很懒,什么都没留下…
展开
-
Java实现hanoi塔
学习数据结构绕不过会遇到汉诺塔的问题,这个也比较经典,问题我也不详细描述了。简单来说三根木桩,初始状态下一根木桩上叠放着n个盘子,大盘在下小盘在上,任你操作,把这些盘子移动到第三根木桩,当然会有限制条件,限制条件如下:1.每次只能移动最上面的一个盘子2.移动过程中小盘子必须放在大盘子上面其实编程实现的话就是递归的思想,比较典型的递归实例,所以基本各个书都会提到。下面直接看代码吧import jav...原创 2018-03-15 19:04:40 · 971 阅读 · 0 评论 -
Java实现稀疏矩阵的压缩
首先给出维基百科里稀疏矩阵的概念:在数值分析中,稀疏矩阵(Sparse matrix),是其元素大部分为零的矩阵。反之,如果大部分元素都非零,则这个矩阵是稠密的。其实很简单,就是矩阵元素大部分为0的矩阵。很明显用传统储存二维矩阵的方法会造成很大的内存浪费,当然传统方法也行,但不够优化,鉴于此便出现压缩矩阵的方法。举个例子,给出下面一个5X5的矩阵,0013050000006000000100900...原创 2018-03-11 17:05:17 · 2181 阅读 · 0 评论 -
八皇后问题
问题描述:将八个皇后摆在一张8X8的国际象棋棋盘上,皇后可以吃掉其同一列、同一行或者同一条对角线上的皇后,那么使每个皇后都无法吃掉别的皇后,这样一共有多少种摆法?算法思想:这是经典的回溯算法的应用,8x8的棋盘我们可以按行或者按列确定皇后的位置,比如我这边是按行安排皇后的位置,那么堆栈里存放的则是其所在列数。当放置一个新皇后时需要检测她是否会被之前放置的皇后吃掉,如果没有吃掉则记录所在列数并推入栈...原创 2018-03-22 20:05:01 · 215 阅读 · 0 评论 -
快速排序介绍及实现
输入为n个数,快速排序期望时间复杂度为O(nlgn),最坏时间复杂度为O(n^2)算法过程 输入为n个数据的数组A[n],快速排序试图找到一个中间数据,把该数据放置中间,这样就分成了两个子数组,左边的子数组都小于中间数,右边的都大于中间数,用同样的方法对子数组进行排序,直到数组全部排序完成。 这里涉及了一个递归的思想在里面。算法的关键也是如何在一组数据中...原创 2018-04-22 13:31:22 · 224 阅读 · 0 评论