![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计与分析
aotulive
大厂螺丝钉。逆水行舟,不进则退
展开
-
插入排序-希尔排序
希尔排序是插入排序的一种,有关插入排序可以移步:直接插入排序。希尔排序是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。排序比较值相同时,前后位置不发生改变,则为稳定排序算法,反之为非稳定排序算法。设计思想希尔排序又称为缩小增量排序,基本思想是分组的直接插入排序。由直接插入排序算法分析可知,若数据序列越接近有序,则时间效率越高;再者,当n(待排序长度)较小时,时间效率也高。希尔排序正是基于这两点对直接插入排序算法进行的优化:将一个数据序列分为若干组,每组由若干相隔一段距离(原创 2020-09-26 22:32:33 · 416 阅读 · 0 评论 -
Ackerman函数的递归实现算法
Ackerman函数A(n,m)定义如下: 有两个独立的整型变量m、n: 输入:输入两个数字,先输入n,后输入m。输出:Ackerman函数计算后的值。 【完整代码】import java.util.Scanner;public class akm{ public static void main(String args[]){ try {原创 2017-04-22 16:35:45 · 8426 阅读 · 1 评论 -
全排列的递归实现算法
全排列的递归实现算法输入:先输入要求输入的字符的个数,后依次输入(或随机生成)每个字符(不能仅仅是数字)。 输出:全排列的结果。 R的全排列可归纳递归定义如下: 完整代码:import java.awt.List;import java.util.Scanner;public class Permutation{ public static void main(String ar原创 2017-04-22 17:52:31 · 2147 阅读 · 0 评论 -
快速排序的递归实现
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是: 设置两个变量i、j,排序开始的时候:i=0,j=N-1;以第一个数组元素作为关原创 2017-04-22 22:20:47 · 502 阅读 · 0 评论 -
二分搜索的递归实现算法
输入:先输入进行二分搜索元素的个数,然后按大小依次输入(或随机生成,然后排序)每个数字,最后输入要求搜索的元素。 输出:要求搜索元素的下标(下标从0开始!)。 完整代码:import java.util.Scanner;//二分搜索递归public class Test08 { public static void main(String[] args) { try原创 2017-04-22 21:51:13 · 1663 阅读 · 0 评论 -
整数划分的递归实现算法
输入:输入整数划分的整数(只输入一次,即n==m)。 输出:输入整数的划分个数值。示例:输入:7,输出:15 q(n,m)的如下递归关系定义如下: 正整数n的划分数p(n)=q(n,n)。完整代码:import java.util.Scanner;public class IntegerPartition{ public static void main(String args[]原创 2017-04-22 21:36:34 · 2661 阅读 · 0 评论 -
合并排序的递归算法
合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为原创 2017-04-22 22:32:48 · 4105 阅读 · 0 评论 -
排序——直接插入排序
设计思想直接插入排序是将线性序列中的元素分为有序部分和待排序部分,每次第一个取待排序数进入排序部分查找到相应位置插入,使有序部分依旧有序,直到整个序列有序。 算法步骤:将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等原创 2017-12-26 22:27:30 · 3943 阅读 · 0 评论