
算法
guoyuxin3
这个作者很懒,什么都没留下…
展开
-
遍历Map集合的两种方式
import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;/* * 遍历HashMap的两种方式 * 1.调用keySet()方法先获取key 之后利用key和get()方法获取value * 2.调用Set<Map.Entry<K, V>> entrySet();方法 将Map集合转为Set集合利用foreach进行遍历 * */publ原创 2021-07-25 17:42:34 · 124 阅读 · 0 评论 -
《算法竞赛入门经典》例题5.4.1
题目:现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 第一项是1/1,第二项是是1/2,第三项是2/1,第四项是3/1,第五项是2/2,……。输入n,输出第n项。1/1 1/2 1/3 1/4 1/5 …2/1 2/2 2/3 2/4 …3/1 3/2 3/3 …4/1 4/2 …5/1 …样例输入: 3 14 7 12345 样例输出: 2/1 2/4 1/4 59/99分析: 数表提示我们转载 2021-07-14 18:44:43 · 997 阅读 · 0 评论 -
习题2-3改写二分搜索算法
设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。template <class T>int binarySearch(T a[],const T&x,int left,int right,int &i,int &j){ int middle; while(left<=right){ middle原创 2021-07-05 16:06:54 · 662 阅读 · 0 评论 -
Java实现二分查找具体实现代码
import java.util.Arrays;/** *使用二分法查找的前提是数组中的元素已排序好 *@author g0rez *@data 2021-06-17 * */public class 二分法查找 { public static void main(String[] args) { int[] arr =new int[]{100,200,599,201,355}; Arrays.sort(arr); for (int.原创 2021-06-17 01:11:52 · 359 阅读 · 0 评论 -
Java实现快速排序详细代码
Java代码实现/** * *@author g0rez *@data 2021-05-19 * */public class 快速排序 { public static void main(String[] args) { int[] arr =new int[]{2,4,3,5,6,1,7,8,10,9}; quickSort(arr,0,arr.length-1); for(int i=0;i<arr.length;i++)转载 2021-05-19 17:59:29 · 1161 阅读 · 0 评论 -
HDOJ(HDU)1996汉诺塔VIJava题解
Problem Descriptionn个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱子从下往上的大小仍保持如下关系 :n=m+p+qa1>a2>...>amb1>b2>...>bpc1>c2>...>cq计算所有会产生的系列总数.Input包含多组数据,首先输入T,表示有T组数据.每个数据一行,是盘子的数目N原创 2021-05-18 09:50:56 · 146 阅读 · 0 评论 -
HDOJ(HDU)1995汉诺塔VJava题解
Problem Description用1,2,...,n表示n个盘子,称为1号盘,2号盘,...。号数大盘子就大。经典的汉诺塔问题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一回只能移动一个圆盘。我们知道最少需要移动2^64-1次.在移动过程中发原创 2021-05-17 14:47:15 · 199 阅读 · 0 评论 -
HDOJ(HDU)1000A + B Problem Java题解
Problem DescriptionCalculateA + B.InputEach line will contain two integersAandB. Process to end of file.OutputFor each case, outputA + Bin one line. 这里是说要循环输入Sample Input1 1Sample Output2代码import java.util.Scanner;/** * *@au...原创 2021-05-16 23:40:29 · 222 阅读 · 0 评论 -
HDOJ(HDU)1994利息计算Java题解
Problem Description为自行解决学费,chx勤工俭学收入10000元以1年定期存入银行,年利率为3.7% 。利率按年计算,表示100元存1年的利息为3.7元.实际上有时提前有时推迟取,因此实际利息按天计算,1年按365天计算,因此Q天的利息是本金*3.7/100 *Q/365存了100天后1年定期年利息提高到3.9%。如将存款提前全取出,再存1年定期。那么前面的100天只能按活期利息1.7%计算。100天的利息和本金:10000(1+1.7/100*100/365)=1004原创 2021-05-16 23:31:49 · 169 阅读 · 0 评论 -
Java实现冒泡排序详细代码
冒泡排序定义冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最原创 2021-05-16 02:24:38 · 6253 阅读 · 0 评论 -
Java实现合并排序(归并)详细代码
归并排序的思路归并排序通过不断的将原数组进行拆分(通常拆分成左右两项),一直到剩下一项,然后分别将拆分的子数组进行合并,此时,两个子数组已经是排好序的,所以合并排序只需要进行一趟排序即可完成,所以此类排序需要两个步骤:1.拆分原数组2.合并子数组。因此此算法是经典的分治算法。拆分算法的思路利用递归,不断得寻找左子数组和右子数组,一直到数组的长度为一合并算法的思路每次合并需要子数组A,B,并新创建一个临时数组C,同时需要三个计数器Actr,Bctr和Cctr,其中Actr和Bctr用来判断转载 2021-05-14 12:20:10 · 3506 阅读 · 1 评论 -
Java实现插入排序详细代码
先来看一张便于理解插入的动图package com.company;/** *插入排序 *@author g0rez *@data 2021-05-13 *最佳情况:T(n) = O(n) 最坏情况:T(n) = O(n2) 平均情况:T(n) = O(n2) */public class 插入排序 { public static void main(String[] args) { int[] arr =new int[]{2,4,3,5,6,1,7,8,1原创 2021-05-13 23:42:27 · 354 阅读 · 0 评论 -
Java中如何输入一个数组
第一种方法:(不限制输入数组的长度) System.out.println("请输入几个数并用逗号隔开:"); Scanner sc = new Scanner(System.in); String str = sc.next().toString(); String[] arr = str.split(","); int[] b = new int[arr.length]; for(int j = 0; j<b.length;j++) { b[j] = Integ转载 2021-05-13 23:09:01 · 24516 阅读 · 5 评论 -
Java实现选择排序详细代码
package com.company;import java.util.Scanner;public class 选择排序 { public static void main(String[] args) { int[] arr =new int[]{2,4,3,5,6,1,7,8,10,9};// Scanner in = new Scanner(System.in);// for(int i = 0 ; i<arr.length;.原创 2021-05-13 23:03:13 · 1219 阅读 · 0 评论