算法学习
IT-Oliver
这个作者很懒,什么都没留下…
展开
-
算法学习之五家共井
问题: 五家人共用一口井,甲家的绳子用两条不够,还要再用乙家的绳子一条才能打到井水;乙家的绳子用三条不够,还要再用丙家的绳子一条才能打到井水;丙家的绳子用四条不够,还要再用丁家的绳子一条才能打到井水;丁家的绳子用五条不够,还要再用戊家的绳子一条才能打到井水;戊家的绳子用六条不够,还要再用甲家的绳子一条才能打到井水。 最后问:井有多深?每家的绳子各有多长? 这道题其实不难,大家应该都可以转载 2016-08-10 09:47:15 · 589 阅读 · 0 评论 -
算法及数据结构(下)
一、排序算法 所谓排序,就是按照某种次序,重新排列某一序列中的所有元素。为此,任意一对元素之间都应该能够比较大小,即在所有元素之间可以定义一个全序关系。排序算法种类繁多,根据其处理数据的规模与存储特点,可分为内部排序和外部排序算法,前者处理的数据规模不大,内存足以容纳,后者处理的数据规模很大,必须将数据存放于外部存储器中,根据输入不同的形式,排序算法可以划分为脱机算法与在线算法,在原创 2017-03-24 11:34:16 · 952 阅读 · 0 评论 -
算法学习之约瑟夫环问题
问题: 假设下标从0开始,0,1,2 .. m-1共m个人,从1开始报数,报到k则此人从环出退出,问最后剩下的一个人的编号是多少?我的理解: 设f(m,k,i)为m个人的环,报数为k,第i个人出环的编号,m个人的环第i个出来的人就相当于m-1个人的环第i-1个出来的人,不过这个序号是相当于原来m个人的序号。但注意的是m个人的环第一个出来的人序号要减一。通俗的讲就是:假设10转载 2016-08-10 09:59:00 · 332 阅读 · 0 评论 -
算法学习之猴子吃桃
问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。我的理解:(假设An表示第n天剩下的桃子数) 我们知道前一天的桃子比后一天的桃子的关系: An-1 = (An + 1) * 2; 所以。。。程序:转载 2016-08-10 09:57:38 · 886 阅读 · 0 评论 -
算法学习之鸡兔同笼
问题:鸡兔同笼,共有头k个,脚m只,求鸡和兔各有多少只?我的解法: 假设兔子只有两个腿,那么k个头就一共有2k只脚,m-2k就是剩下的脚,而这些脚应该是兔子多出来的脚,每个兔子多两只脚,所以兔子就有(m-2k)/2只,鸡就不言而喻了。程序: //head:总的头数 //foot:总的脚数 public static void JTTL(int hea转载 2016-08-10 09:56:43 · 1626 阅读 · 0 评论 -
算法学习之插入排序
插入排序插入排序算法通过比较和插入来实现排序,其排序流程如下: 1)首先对数组前两个数据进行从小到大排序 2)接下来将第3个数据与排好序的两个数据进行比较,将第3个数据插入合适的位置 3)然后,将第4个数据插入到排好序的3个数据中 4)直到最后一个数据插入到排好序的前n-1个数据中即排好序了 如图: 这里就不解释了,大家应该都看得懂。(第一次前2个数据排,第转载 2016-08-10 09:56:02 · 325 阅读 · 0 评论 -
算法学习之选择排序
选择排序选择排序算法通过选择和交换来排序,其排序流程如下: 1)首先从原始数组中选择最小的一个数据,将其和第一个位置的数据交换 2)接着从剩下的n-1个数据选择出最小的数据,将其和第二个位置的数据交换 3)这样不断重复,直到最后两个数据完成交换,即排好了 public static void selectSort(int a[]) { for (in转载 2016-08-10 09:54:20 · 245 阅读 · 0 评论 -
算法学习之冒泡排序
我们这里先介绍几种适用的比较少的数据时候,算法复杂度都是O(n2),介绍三种算法: ①冒泡排序算法 ②选择排序算法 ③插入排序算法 这篇介绍第一种:冒泡排序算法 冒泡排序算法通过多次比较和交换来实现排序,其排序流程如下: 1)对数组中的各数据,依次比较相邻两个元素的大小 2)如果前面的数据大于后面的数据,则交换这两个数据,经过一轮排序后,便把最大的数据排好了 3)再转载 2016-08-10 09:52:59 · 243 阅读 · 0 评论 -
算法学习之百钱白鸡
百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱, 用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱? 我们可以设公鸡为x,母鸡为y,小鸡为z,可以得出下列方程: x + y +z=100; 5x + 3y + z/3 = 100; 再看看x,y,z的取值,只有100文转载 2016-08-10 09:51:29 · 717 阅读 · 0 评论 -
算法学习之折半查找
二分查找又称折半查找 优点: 比较次数少,查找速度快,平均性能好 缺点: 要求待查表为有序表,且插入删除困难。 因此,折半查找方法适用于不经常变动而查找频繁的有序列表。折半查找流程: 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,转载 2016-08-10 09:50:36 · 580 阅读 · 0 评论 -
算法以及数据结构(上)
一、算法1、算法定义 所谓算法,就是在特定计算模型下,在信息处理过程中为了解决某一类问题而设计的一个指令序列。一个算法还必须具备以下要素: (1)输入:待处理的信息,即对问题的描述。 (2)输出:经过处理后得到的信息,即问题的答案。 (3)确定性:任一算法都可以描述为由若干种基本操作组成的序列,即处理该问题的基本操作步骤。原创 2016-10-24 17:56:31 · 1362 阅读 · 0 评论