算法
芒果他爸
知之为知之,不知为不知
展开
-
快速排序算法实现(C版)
一趟快速排序的算法: 1)设置两个变量I、J,排序开始的时候:I=0,J=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0];3)从J开始向前搜索,即由后开始向前搜索(J=J-1即J--),找到第一个小于key的值A[j],A[j]与A[i]交换;4)从I开始向后搜索,即由前开始向后搜索(I=I+1即I++),找到第一个大于key的A[i原创 2012-10-18 16:27:22 · 628 阅读 · 0 评论 -
计数排序算法实现(C版)
算法的步骤:1.找出待排序的数组中最大和最小的元素2.统计数组中每个值为i的元素出现的次数,存入数组C的第i项3.对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)4.反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1 源代码:#include//double start_time = 0;//double end原创 2012-10-16 09:23:21 · 762 阅读 · 0 评论 -
约瑟夫问题初探
约瑟夫问题:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他原创 2012-10-23 09:52:51 · 1097 阅读 · 0 评论 -
动态规划求解01背包问题初探(C版)
理论部分来自http://blog.csdn.net/ymeng_bupt/article/details/6820544一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求原创 2012-10-26 17:54:32 · 1270 阅读 · 0 评论 -
BFS求解迷宫问题初探(java版)
BFS,其英文全称是Breadth First Search。 BFS并不使用经验法则算法。从算法的观点,所有因为展开节点而得到的子节点都会被加进一个先进先出的队列中。一般的实验里,其邻居节点尚未被检验过的节点会被放置在一个被称为 open 的容器中(例如队列或是链表),而被检验过的节点则被放置在被称为 closed 的容器中。(详情见百度百科)import java.util.Lin原创 2014-01-24 14:30:21 · 4418 阅读 · 1 评论 -
计算N的阶乘结果末尾含多少个零
计算N的阶乘结果末尾含多少个零原创 2016-08-16 23:33:47 · 4489 阅读 · 1 评论 -
波兰式转换为逆波兰式
波兰式是在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之前,所以这种表示法也称为前缀表达式。例如: (2 + 4) * 6的波兰式为 *+246逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),将运算符写在操作数之后,也叫后缀表达式。例如:(2 + 4) * 6的逆波兰式为 24+6*算法实现(java): 构建波兰式二叉树后续遍历二叉树生成逆波原创 2017-02-05 23:58:51 · 1409 阅读 · 0 评论 -
二叉搜索树(BST)的增删改
维基百科关于二叉搜索树的介绍二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree),是指一棵空树或者具有下列性质的二叉树。在二叉查找树删去一个结点,分三种情况讨论:若*p结点为叶子结点,即PL(左子树)和PR(右子树)均为空树。由于删去叶子结点不破坏整棵树的结构,...原创 2018-04-12 10:55:27 · 781 阅读 · 0 评论