![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
主要以Java语言实现
APRII2
这个作者很懒,什么都没留下…
展开
-
排序算法:希尔排序算法思想及实现示例
冒泡排序算法、选择排序算法和插入排序算法,虽然思路简单,但是排序效率比较低。对于大量得数据需要排序时,往往需要其他更高效的排序算法。希尔排序算法便是其中一种。希尔排序算法希尔排序基于插入排序的思想,又称为缩小增量排序。希尔排序算法的排序流程如下:(1)将有n个元素的数组分成n/2个数字序列,第1个数据和第n/2 + 1个数据为一对,……(2)一次循环使每一个序列对排行顺序。(3...原创 2020-03-05 17:39:25 · 501 阅读 · 0 评论 -
算法经典趣题:汉诺塔(Hanoi)问题
汉诺塔算法汉诺塔问题时一个典型的递归算法问题,可以先从简单的3层汉诺塔入手。假设有ABC三根棒子,初始状态时,A棒上放着3个圆盘,将其移动到C棒上,可以用B棒暂时放置圆盘。并且规定一次只能移动一个圆盘,且圆盘在放到棒上时,大的只能放在小的下面。使用递归思想,可以采用以下步骤来完成圆盘的移动:(1)将A棒上的两个圆盘(圆盘1和圆盘2)移到B棒上;(2)将A棒上剩下的一个圆盘移到C棒上...原创 2020-03-05 14:07:54 · 1880 阅读 · 0 评论 -
基本算法思想(三):递归算法思想及阶乘问题实现
前言:算法是程序的灵魂,一个好的算法往往可以化繁为简、高效率地求解问题。在程序设计中,算法是独立于程序语言的。无论采用哪一门程序语言,都可以使用这些算法。递归算法思想递归算法是很常用的算法思想。使用递归算法,往往可以简化代码编写,提高程序的可读性。不合适的递归往往导致程序的执行效率变低。递归算法即在程序中不断反复调用自身来达到求解问题的方法。此处的重点是调用自身,要求待求解的问...原创 2020-03-03 22:58:18 · 1272 阅读 · 1 评论 -
基本算法思想(二):递推算法思想及兔子产仔问题实现
前言:算法是程序的灵魂,一个好的算法往往可以化繁为简、高效率地求解问题。在程序设计中,算法是独立于程序语言的。无论采用哪一门程序语言,都可以使用这些算法。递推算法思想递推算法是很常用的算法思想,在数学计算等方面有着广泛的应用,适合有着明显公式规律的场合(可根据已有的数据和关系,逐步推导而得到结果)。递推算法的执行过程如下:(1)根据已知结果和关系,求解中间结果。(2)判定...原创 2020-03-03 21:31:24 · 360 阅读 · 0 评论 -
基本算法思想(一):穷举算法思想及鸡兔同笼问题实现
前言:算法是程序的灵魂,一个好的算法往往可以化繁为简、高效率地求解问题。在程序设计中,算法是独立于程序语言的。无论采用哪一门程序语言,都可以使用这些算法。穷举算法思想穷举算法是最简单的一种算法,依赖于计算机的强大计算能力,来穷尽每一种可能的情况,从而达到求解问题的目的。穷举算法效率不高,适合一些没有明显规律可循的场合。穷举算法的基本思想就是从所有可能的情况中搜索正确的答案,执行步...原创 2020-03-03 20:36:51 · 2070 阅读 · 1 评论 -
查找算法:顺序查找思想及实现示例
查找算法思想如果查找到相应的数据项,往往需要返回该数据项的地址或者位置信息。这样。程序中可以通过位置信息来显示数据项、插入数据项、删除数据项等操作。如果没有查找到相应的数据项,则可以返回相应的提示信息。在实际应用中,针对不同的情况往往可以选择不同的查找算法。对于无顺序的数据,只有逐个比较数据,才能找到需要的内容,这称为顺序查找。对于有顺序的数据,也可以采用顺序查找法逐个比较,但还可以采...原创 2020-03-03 18:52:51 · 3430 阅读 · 0 评论 -
排序算法:插入排序算法思想及实现示例
插入排序算法通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。插入排序算法思路简单,应用较多。插入排序算法插入排序算法通过比较和插入来实现排序,其排序流程如下:(1)首先对数组的前两个数据进行从小到大的排序。(2)接着将第3个数据与排好序的两个数据比较,将第3个数据插入合适的位置。(3)然后,将第4个数据插入已排好序的前3个数据中。(4)不断重复上述过程,直到把最后...原创 2020-03-03 16:51:22 · 1149 阅读 · 0 评论 -
排序算法:冒泡排序实现从大到小输出成绩数组
需求:逐个输入10个学生成绩,并将从大到小输出。分析:可使用冒泡排序将成绩数组进行交换排序冒泡排序示例代码:void bubbleSort(int[] a){ int temp; for(int i = 1;i < a.length;i++) { for(int j = 0;j < a.length - i; j++) { ...原创 2020-02-27 18:11:03 · 3767 阅读 · 0 评论 -
排序算法:选择排序算法思想与代码示例
选择排序算法也是比较简单的排序算法,选择排序算法在每一步中选取最小值来重新排列,从而达到排序的目的。选择排序算法通过选择和交换来实现排序,以从小到大排序为例,其排序流程如下:(1)首先从原始数组中选择最小的1个数据,将其和位于第1个位置的数据交换。(2)接着从剩下的n - 1 个数据中选择次小的1个数据,将其和第2个位置的数据交换。(3)然后不断重复上述过程,直到最后两个数据完...原创 2020-03-02 17:04:51 · 216 阅读 · 0 评论 -
算法基础:循环打印输出九九乘法表
需求:打印输出中文的九九乘法表分析:1、使用for循环嵌套结构,外层for循环控制行数,里层for循环控制列数。 2、乘法公式“1*1= 1”用函数转换成对应的“一一得一”,中文用字符串数组保存。 3、字符与数字得转换规则:例“二十一”与21的转换,中间要用“十”连接。public class times9x9 { // 编写程序,打印九九乘法表 p...原创 2020-02-27 15:15:49 · 1130 阅读 · 0 评论 -
算法基础:约分最简分式
需求:对用户输入的一个分数(分别输入分子和分母)进行约分,并且输出约分后的分数(分别输出分子和分母)。例如:输入分子为6,分母为12,输出为1/2。求解思路:先用辗转相除法求出两数的最大公约数,然后再分别相除,将所得拼接成字符串结果。import java.util.Scanner;public class Contract { public static int get...原创 2020-02-27 13:45:52 · 2053 阅读 · 0 评论 -
数论问题:最大公约数的3种求法
几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。12、15、18的最大公约数是3,记为(12,15,18)=3。原创 2020-02-27 12:55:54 · 2392 阅读 · 0 评论 -
基本数学问题:判断闰年
一、闰年的判断规则:公元年分除以4不可整除,为平年。 公元年分除以4可整除但除以100不可整除,为闰年。 公元年分除以100可整除但除以400不可整除,为平年。 公元年分除以400可整除,为闰年。二、判断闰年的示例函数:boolean isLeapyear(int year){ if(((year%4 == 0) && (year%100 != 0)...原创 2020-02-27 23:57:22 · 1187 阅读 · 0 评论 -
基本数学问题:利用二维数组实现矩阵的乘法
矩阵的乘法:1、当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。2、矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。3、乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。需求:编写程序实现两个二维矩阵的乘法。数组中的元素随机生成。分析:1、定义两个int类型的二维数组int[][] a与int[][] b...原创 2020-02-27 19:52:51 · 4307 阅读 · 2 评论