随笔分类 -  算法

摘要:今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,把动态规划用故事的方式讲了出来,令人眼前一亮啊,于是转载一下下~~~ 原文地址:通过金矿模型介绍动态规划 点击下载01背包测试数据.rar 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总 阅读全文
posted @ 2017-02-18 19:54 超超boy 阅读(1859) 评论(0) 推荐(0) 编辑
摘要:import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import java.util.Queue; import java.util.Stack; /** * * @author kerryfish * JAVA实现二叉树的先序、中序、后序、层序遍历 ... 阅读全文
posted @ 2016-07-29 14:31 超超boy 阅读(554) 评论(0) 推荐(0) 编辑
摘要:堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。 堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 情形1:ki <= k2i 且ki <= k2i+1 (最小化堆或小顶堆) 情 阅读全文
posted @ 2016-07-20 21:09 超超boy 阅读(8761) 评论(0) 推荐(0) 编辑
摘要:希尔排序的实质就是分组插入排序,该方法又称缩小增量排序。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素 阅读全文
posted @ 2016-05-01 16:31 超超boy 阅读(418) 评论(0) 推荐(0) 编辑
摘要:思想 快速排序采用的思想是分治思想。 流程如下: 1)设定一个分界值,通过该分解值将数组分成左右两部分。 2)将>=分解值得数据集中到数组右边,<分解值的数据集中到数组左边。此时,左边部分各元素都小于分解值,右边的元素都大于分解值。 3)然后,利用递归的思想,左右两边分别独立排序。对于左侧的数组数据 阅读全文
posted @ 2016-03-22 09:26 超超boy 阅读(454) 评论(0) 推荐(0) 编辑
摘要:一、递推算法基本思想: 递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果。递推算法的执行过程如下: 1)根据已有的·结果和关系,求解中间结果 2)判定是否达到要求,如果没有达到,则继续根据已知结果和关系求解中间结果;如果满足要求,则表示寻找到一个正确的答案。 递推算法往往 阅读全文
posted @ 2016-03-21 23:30 超超boy 阅读(6496) 评论(0) 推荐(0) 编辑
摘要:1.冒泡排序法:比较相邻的两个元素,如果前边比后边大,就对调两元素,一趟下来,最大的数放在最右边,就像泡泡上升一样。 代码: /* * 冒泡 */ static void bubble_sort(int[] array) { for (int i = 0; i < array.length; i++ 阅读全文
posted @ 2016-03-08 21:41 超超boy 阅读(364) 评论(0) 推荐(0) 编辑