数据结构与算法
陈年风楼
如果需要查看更多博客,请移步我的个人博客 http://zhangjiaheng.cn
展开
-
算法数据结构之贪心算法
贪心算法之装箱问题 贪婪准则 ①、算法的每一步都要求最优解(即局部最优) ②、贪婪准则一旦设定好,中途不能改变 贪婪准则并不一定可以获得绝对最优解,只是局部最优 问题描述: 装箱问题: A>.有若干个体积为V的箱子 B>.有n个物品,v0,v1,v2… …vn,体积互不相同 要求:将所有的物品都装入箱子里,使打开的箱子尽可能的少设置贪心准则 I、将所有的物品原创 2015-09-20 21:14:42 · 2191 阅读 · 0 评论 -
【算法训练】八皇后问题回溯算法求解
题目描述 会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将 8 个皇后放在棋盘上(有8×8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。原创 2016-04-27 22:09:31 · 1302 阅读 · 0 评论 -
八大排序算法之归并排序
归并排序,就是合并排序。简言之即合并有序序列,组成一个新的有序数组。归并排序的主要过程:归并排序运用了分治算法的思想,将一个数组划分成两个,两个划分成四个,直到单个序列的长度为1 ,开始合并有序数组(长度为一的序列肯定是有序的 ,因为只有一个数值),然后返回上一层递归调用,合并新的有序数组(这是待合并的序列长度为2 ),以此类推,直到排序完成。 归并排序的java代码实现://合并有序序列原创 2016-04-07 22:18:33 · 427 阅读 · 0 评论 -
八大排序算法之冒泡排序
这个。。。就放代码吧 public static void main(String[] args) { int a[] = {6,3,7,9,1,4,2,5,8}; for (int i = 0; i < a.length; i++) { System.out.printf("%d " , a[i]); }原创 2016-04-04 15:53:54 · 270 阅读 · 0 评论 -
八大排序算法之简单选择排序
基本排序思想:: 在要排序的一组数中,选出最大(或者最小)的一个数与第一个位置的数字进行交换;然后在剩下的一组数中再找最大(或者最小)的与第二个位置进行交换,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止,排序完成! 具体步骤见代码中注释#include<stdio.h>//选择一个最大值出来int MaxKey(int a[], int m, int n){原创 2015-11-05 19:19:38 · 522 阅读 · 0 评论 -
八大排序算法之二元选择排序
选择排序的思想即在要排序的一组数中,选出最大(或者最小)的一个数与第一个位置的数字进行交换;然后在剩下的一组数中再找最大(或者最小)的与第二个位置进行交换,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止.而二元选择排序,顾名思义,从待排序数组中选择一个最大值,和一个最小值,分别与第一个和最后一个元素进行交换,这样就使选择排序的时间复杂度能够降低~在敲这段代码的过程中遇到一个以前原创 2015-11-11 21:11:07 · 2978 阅读 · 4 评论 -
八大排序算法之插入排序
八大排序算法之插入排序插入排序 :对于一个整型数组,将其分为已排序和未排序两部分。若须实现升序排序的话,在未排序的那一部分中取出第一个的元素,然后遍历已排序数组元素,找到这个取出待排序的元素的容身之所,插入。然后已排序的数组元素个数就增加了一个,同理未排序的数组元素个数就减少了一个。直到未排序的数组元素个数为零,结束程序 以下是插入排序的简单代码 //将 n 插入到数组a[] 的从0 到en原创 2016-04-04 14:48:51 · 430 阅读 · 0 评论 -
回溯算法的常见例题之《迷宫》
回溯算法的常见例题之《迷宫》 回溯算法——百度百科: 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。 用回溯算法解决问题的一般步骤: 1 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。 2 确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间 。 3 以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索原创 2016-03-05 22:11:57 · 2199 阅读 · 0 评论 -
八大排序算法之快速排序
八大排序算法之快速排序八大排序算法每一种都是必须掌握的,不过快速排序是我们必须掌握很熟练并且是面试中被问到的最多次的排序算法。面试时会被面试官问到快速排序实现的原理,会问到给定序列的时间复杂度等等。快速排序也是分治算法的一种,何为分治算法?请百度,哦不,谷歌一下先。。。Talk is cheap,show you the code!public class Test9{ /**以下标low对原创 2016-03-29 21:08:01 · 513 阅读 · 0 评论 -
算法练习——李白打酒
题目描述: 李白好饮酒, 无事街上走; 提壶去打酒, 原有酒两斗; 遇店加一倍, 遇花喝一斗。 问:李白在遇到五家店和十朵花以后,他壶中的酒恰好喝完,那么他遇到花和店的顺序是怎样的? 题目解析:这道题没有什么难度,但是前提是你做过这种类似的,就很好想了。解法就是使用二进制表示他遇到的花和店,那么遇到的顺序就有2的15次方种,穷举所有情况,原创 2016-02-03 19:21:53 · 4660 阅读 · 0 评论 -
斐波纳挈数列的三种求法(java实现)
斐波纳挈数列的三种求法(java实现)什么是斐波纳挈数列? 后一项的数字等于前一项数字加上前一项的前一项的数字.我们称这样的数列为斐波纳挈数列,斐波纳挈数列有个特点,越往后数列的第n与比数列的第n+1项的比值越接近黄金值(0.618几几几~~~). 所以斐波纳挈数列也被称为黄金数列.斐波纳挈数列的三种求法—-直接上代码: Java代码:class Fabonacci { pri原创 2015-11-29 14:08:14 · 2512 阅读 · 0 评论 -
【算法练习】蛇形矩阵
import java.util.Scanner;/** * @author 张嘉恒 * 蛇形矩阵 * 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 */public class SnackA { publ原创 2016-09-03 18:51:35 · 1654 阅读 · 0 评论