
3.数据结构
Whale-Song
今天 你努力了不管是否有收获 至少你赢了坐享其成的你。
展开
-
排序---冒泡排序
冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。算法原理冒泡排序算法的运作如下:(从后往前)1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后...原创 2018-03-18 20:39:15 · 183 阅读 · 0 评论 -
排序---选择排序
选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。通俗的解释对比数组中前一个元素跟后一个元素的大小,如果后面的元...原创 2018-03-18 20:46:01 · 160 阅读 · 0 评论 -
排序---插入排序
插入排序有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最...原创 2018-03-18 20:54:46 · 246 阅读 · 0 评论 -
排序---希尔排序
希尔排序 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时...原创 2018-03-19 20:16:21 · 155 阅读 · 0 评论 -
排序---归并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。复杂度时间复杂度为O(nlog₂n) 这是该算法中最好、最坏和平均的时间性能。空间复杂度为 O(n)比...原创 2018-03-20 19:37:11 · 182 阅读 · 0 评论 -
搜索---DFS---倒油
题目 相对于广搜,深搜采用的过程偏向面向过程,用“特征串”去区别两种情况是否相同,(同一种搜索)在效率比面向对象要快点。 话不多说直接上代码(3个类):/** * 倒油---倒油问题解决的过程 * @author 宋进宇 */import java.util.ArrayList;public class PourOil { public static void main(...原创 2018-03-29 18:33:39 · 468 阅读 · 0 评论 -
搜索---BFS---倒油
BFS是什么就不多少了直接来个题目---倒油: 有一位厨师要从盛12斤油(a桶)的桶中倒出6斤油来,可是手边只有盛8斤油(b桶)和盛5斤油(c桶)的两个桶,问如何操作才能将6斤取出来呢?题解: 采用面向对象去做,面向对象最主要的是要注意引用直接的捆绑,这个是采用面向对象解题的一大坑,很练手,可以加大对引用和基本数据类型的认识。具体过程如下(有3个类):主类:import...原创 2018-03-29 16:36:21 · 499 阅读 · 0 评论 -
排序---快速排序
快速排序属于分治策略的排序算法。 1.分解:以a[i]为基准元素将a[i:n]划分成3段,a[i,q-1],a[q],a[q+1,n],使a[i,q-1]中任何一个元素都小于等于a[q],a[q+1,n]中任何一个元素都大于等于a[q]。下标q的位置在划分过程中确定。 2.递归求解:通过递归调用快速排序算法分别对a[i,q-1]和a[q+1,n]进行排序。 3.合并:由于对a[i,q-1]和a原创 2017-10-25 21:58:47 · 455 阅读 · 0 评论 -
二叉树---遍历
二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式先序、中序、后序遍历代码演示:二叉树接口:package cn.hncu.dataStructure.binTree;/** * 二叉树接口 * 可以有不同的实现类,每个类可以使用不同的存储结构,比如顺序结构、链式结构 * */public interface BinaryTree { /** * 是否...原创 2018-08-25 14:21:22 · 198 阅读 · 0 评论