![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法(用Java实现)
用Java实现题目求解
风儿吹吹吹
学学学,学完写代码
展开
-
经典排序算法之:冒泡排序
排序算法在编程中有着举足轻重的地位。排序能够让人们很直观的看到数据的意义。在Java编程中,有很多排序算法,例如插入排序、冒泡排序、归并排序、快速排序等。此次让我主要讲解冒泡排序算法。目录1.冒泡排序算法的定义。2.冒泡排序算法的过程3.冒泡排序算法的实现1.冒泡排序算法的定义。 冒泡排序算法多次遍历需要多次遍历数组,在每次遍历中。比较连续相邻的元素。如果某一一对元素是降序(前面的大于后面的),则交换它们的值;否则,保持不变。 由于较小的值像气泡一样逐渐浮上顶部,而较大的值沉像底部,所以原创 2022-01-25 15:38:11 · 1461 阅读 · 2 评论 -
经典算法之:递归(以斐波那契数列问题看待递归)
在世界的万事万物中,总有些东西要一直重复做下去。比如说你一个月的1号早上7点跑步,2号早上7点跳绳,3号早上7点打羽毛球…如此做下去,做30天(假设每一个月都有30天),然后下个月在如此做重复的事情。这就是循环。 在了解递归之前,我们先了解下一迭代一、迭代: 迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。例如:一个for循环的一次操作就是一次迭代.for(int i =0; i <=原创 2022-01-20 17:25:43 · 2608 阅读 · 0 评论 -
经典排序算法之:快速排序
快速排序可能是应用最广泛的排序算法。快速排序流行的原因是它实现简单、适用于各种不同的输入数据且在一般应用中比其他排序算法都要快很多。此次,我们来学习一下快速排序算法。一、快速排序算法含义 快速排序是一种分治的排序算法。它会在数组中选择一个基准元素,讲数组分为两部分,使得第一部分中的所有元素都小于或等于基准元素,而第二部分中的所有元素都大于基准元素。对第一部分和第二部分递归的应用快速排序算法。二、快速排序算法过程例如: 对数组 [5 2 9 3 8 4 0 1 6 7 ]进行快速排序原创 2022-01-18 13:21:53 · 10363 阅读 · 2 评论 -
经典算法问题: 逆序对(用归并排序的思想解决)
问题:给定一个长度为n的排列,求其逆序对数输入格式: 输入一个数组输出格式: 输出逆序对总数 样例输入: [1,2,4,3]样例输出: 1数据规模: n<=100000解题思路: 首先,在解决这个问题之前,先了解一下什么叫逆序对逆序对:数学术语,设 A 为一个有 n 个数字的有序集 (n>1),其中所有数字各不相同。如果存在正整数 i, j 使得 1 ≤ i <原创 2022-01-15 19:02:40 · 2210 阅读 · 2 评论 -
经典排序算法之:归并排序
排序就是将一组对象按照某种顺重新排列的过程,但是在处理较大的数字时,普通的排序已经没法满足时间的要求,于是发现了一种简单的递归排序的算法:归并排序1.归并排序的定义 所谓的归并排序,就是将一个要排序的数组递归的分成两半分别排序,排好序后,然后在将两部分数组归并起来。优点:其性质使它能够保证任意长度为N的数组排序所需时间和NlogN成正比; 缺点:它所需的格外空间和N成正比2.归并排序算法的过程及思想例如数组:nums={2,9,5,4}如图将nums的四个元素进行递归拆分原创 2022-01-15 17:06:42 · 550 阅读 · 0 评论 -
判断回文数
题目:如果一个字符串从前往后,以及从后往前都是一样的,那么它就是一个回文数。请编写程序,判断其是否是一个回文数。代码实现:public class Palindrome {//判断回文数 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一串字符:"); String s = input原创 2022-01-10 21:49:26 · 3608 阅读 · 0 评论 -
十进制转换为十六进制
问题:计算机系统中经常会用到十六进制,那么如何将十六进制转换为十六进制呢?例如: 十进制123转换为十六进制数为7B,1234转换为十六进制为4D2。代码实现:public class Dec2Hex { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个十进制数:"); int原创 2022-01-10 18:57:24 · 2871 阅读 · 0 评论 -
求最大公约数
题目:两个整数4和2的最大公约数是2,16和24最大公约数是8,请用程序实现最大公约数的求值。代码实现:public class GreatestCommonDivisor { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入一个数:"); int num1 = input.nextInt(原创 2022-01-10 16:53:44 · 385 阅读 · 0 评论 -
代码实现判定闰年
题目:如果某年可以被4整除而不能被100整除,或者可以被400整除,那么这一年就是闰年。代码实现:public class LeapYear { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入年份:"); int year = input.nextInt(); bool原创 2022-01-09 20:21:07 · 1277 阅读 · 0 评论 -
使用公式使用户输入年利率,贷款额度和支付年数,计算支付额度
题目:月支付额度 =贷款额度 * 月利率/(1-1/(1+月利率)^(年数*12))总支付额度 = 月支付额度年数12代码实现:public class InterestRate { //根基公式计算月供,总供 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入年利率:例如:6.08:");原创 2022-01-06 20:34:50 · 1000 阅读 · 1 评论 -
Java算法:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明:
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:解题代码: public void moveZeroes(int[] nums) { int cunt=0; for (int i = 0; i < nums.length; i++) {原创 2021-10-11 16:03:28 · 1213 阅读 · 0 评论 -
应用题:计算以秒为单位的时间量所包含的分钟数和秒数。例如,500秒就是8分20秒
题目:计算以秒为单位的时间量所包含的分钟数和秒数。例如,500秒就是8分20秒分析:1分等于60秒500秒对60取余得20代码实现:public class DisplayTime { public static void main(String[] args) { Scanner inout = new Scanner(System.in); System.out.println("请输入秒数:"); int seconds = in原创 2022-01-05 17:15:03 · 3333 阅读 · 0 评论 -
Java算法:给你一个整数num。你可以对它进行如下步骤恰好两次︰ 选择一个数字x (o <= x <= 9) . 选择另一个数字y (o <= y <= 9)。数字y可以等于。·将num中所有出现x
题目:给你一个整数num。你可以对它进行如下步骤恰好两次︰选择一个数字x (o <= x <= 9) .选择另一个数字y (o <= y <= 9)。数字y可以等于x。将num中所有出现x的数位都用y替换。·得到的新的整数不能有前导0,得到的新整数也不能是0。令两次对num的操作得到的结果分别为a和b。请你返回a和b的最大差值。示例 1:输入:num = 555输出:888解释:第一次选择 x = 5 且 y = 9 ,并把得到的新数字保存在 a 中。第原创 2021-10-15 22:54:55 · 422 阅读 · 0 评论 -
Java应用题:模拟一个简单的购房商贷月供计算器,按照以下公式计算总利息和每月还款金额,总利息=贷款金额*利率,贷款年限不同利率也不同,这里规定只有三种年限、利率,见表
题目: 模拟一个简单的购房商贷月供计算器,按照以下公式计算总利息和每月还款金额:总利息=贷款金额*利率每月还款金额= (贷款金额+总利息) /贷款年限贷款年限不同利率也不同,这里规定只有三种年限、利率,见表,年限利率3年(36个 月)6.03%5年(60个月)6.12%20年(240个 月)6.39%要求根据输入的贷款金额和年限,计算出每月的月供。输出结果如下:请输入贷款金额:600000请选择贷款年限:1.3年(36个月)2.5年(60个月)20原创 2021-10-12 17:18:50 · 2308 阅读 · 0 评论 -
Java算法:小明今年18岁了,按常理是摆18根螳烛点燃,但小明哪是常人?他想了想, 18在二进制可不就是10010么,于是他找来了5根蜡烛,点燃其中2根 ,开心地过上了18岁生日
问题:小明今年18岁了,按常理是摆18根螳烛点燃,但小明哪是常人?他想了想,18在二进制可不就是10010么,于是他找来了5根蜡烛,点燃其中2根开心地过上了18岁生日:如果对于一个x岁的人,过生日时,需要m个蜡烛,需要点然o根。那么已知x,请输出m和n输入描述Input: 1<=x<=500输出描述Output: m,n思路:由题可得,18的二进制为10010,他就准备了5根蜡烛也就是说,他需要准备的蜡烛是根据他的二进制数总和所得他需要点燃的蜡烛是二进制里面的1总和原创 2021-09-25 10:35:27 · 697 阅读 · 0 评论 -
Java算法:给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
题目:给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3分析这道题没有说时间复杂度,那么既然这样就先不考虑,题目说给定一个整数数组,在1-n之间,数组有n+1个整数。在这个数组里面存在着一个重复的整数,但是数组的数字是在1-n之间,我们可以最简单的情况把这个数组想为一个有序数组.原创 2021-09-13 00:53:24 · 1622 阅读 · 2 评论 -
Java算法:给定一个数组,已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素。
题目: 给定一个数组,已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素。 如:[1,2,3,4,5,5,4,3,1] 则2没有成对出现。分析:此题寻找数组中单独出现的数,已知元素成对出现。成对出现的话就有方法了:异或两个一样的为0,0异或任何数为任何数异或算法解题加代码解法:异或算法由异或可得n^n=00^n=n代码实现:public int findOne(int[] nums){//异或 int count = 0; fo原创 2021-09-16 22:41:53 · 643 阅读 · 0 评论