
算法练习
折纸鹤
这个作者很懒,什么都没留下…
展开
-
输出字符串中各元素的组合
import java.util.HashSet;public class Main {//字符串状态码乱序 public static void main(String[] args) { HashSet<String> hs=UpSet("abcd"); for (String s : hs) { System.out.println(s); } } public static HashSe.原创 2020-09-09 11:13:51 · 400 阅读 · 0 评论 -
小Q的歌单
链接:https://www.nowcoder.com/questionTerminal/f3ab6fe72af34b71a2fd1d83304cbbb3?answerType=1&f=discussion来源:牛客网小Q有X首长度为A的不同的歌和Y首长度为B的不同的歌,现在小Q想用这些歌组成一个总长度正好为K的歌单,每首歌最多只能在歌单中出现一次,在不考虑歌单内歌曲的先后顺序的情况下,请问有多少种组成歌单的方法。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个.原创 2020-06-24 11:20:16 · 217 阅读 · 0 评论 -
归并排序
归并排序: 归并排序采用的分治的思想,而且采用了递归的算法。思想是将两个已经排好序的数组进行合并到第三个数组中,通过对两个数组上从前往后两个位置上的数不断进行比较,取较小者装入第三个数组的下一个位置,来实现第三个数组即合并数组的有序。具体的做法即将一个待排序数组不断细分为左右两数组直至每个数组长度为一,然后对其与左右两个数组进行合并,最终实现待排序数组的有序。package mergeS...原创 2018-12-24 17:02:32 · 149 阅读 · 0 评论 -
桶排序与基数排序
1、桶排序: 桶排序适用于对一些少量的数据进行排序,思路是确立一个上限值M,该M值应大于待排序数组中所有的值。然后设置M数量的带序号的桶,之后依次从待排序数组中读取数据并将该数字装入序号为该数数值大小的桶中,最后按照桶的序号依次取出桶中的数据即为已经排好顺序的数据。该算法用时为O(M+N)。package bucketSort;import java.util.Array...原创 2018-12-20 19:19:31 · 646 阅读 · 0 评论 -
二叉树搭建及先序、中序、后序遍历(JAVA)
A / \ B C / \ \ D E Fpackage binaryTree;public class BinaryTree { public Treenode cr...原创 2018-10-29 10:56:38 · 181 阅读 · 0 评论 -
希尔排序
希尔排序:希尔排序的主要思想为设定一个间距gap,从下标0到下标为gap开始,将待排数组以gap为间距分成gap组于各自位上进行插入排序,然后缩小gap值,再进行重复操作直至gap值为1时排序完成。总的来说希尔排序是在直接插入排序的基础之上所做的优化,通过对待排序序列的划分小规模子序列进行插入排序,然后在最后一步的直接插入排序的过程做一些小的微调即完成排序,提高了效率。例如对于待排序数组:3...原创 2018-12-27 11:14:02 · 312 阅读 · 0 评论 -
快速排序(三数中值法)
快速排序:快速排序的主要思想即是在待排序数组中找到一个枢纽元,作为参考将数组分为大于枢纽元与小于枢纽元两部分来处理,然后运用分治法的思想进行递归,在分出来的两部分中分别再取一个枢纽元进行参考作类似的处理。该算法的平均运行时间是O(NlogN),而最坏的情形时性能为O(N^2),由此可见该算法的性能取决于枢纽元的选取上,因此在此采用了三数中值法来对枢纽元进行选取,可以有效规避最坏的情形。三...原创 2018-10-29 10:49:12 · 10042 阅读 · 0 评论 -
插入排序
插入排序: 插入排序即将无序数序列一个一个插入到有序数序列中的合适位置,使得整个序列有序。思想:将整个序列划分成有序子序列和无序子序列,在初始时有序子序列即为待排序序列中的第一个元素,之后将无序子序列中的元素依次在有序序列中从后往前进行对比,直至在有序序列中找到第一个小于该元素的数,插入至其后。由于数列有序加上前提条件,因此该位置之前的元素必然小于该数,该位置之后的元素也必然不小于该数,这样插入之...原创 2018-12-27 16:52:05 · 172 阅读 · 0 评论 -
堆排序
堆排序:堆排序的思想即利用堆的性质,最大的数将位于堆顶,于是取出堆顶最大的数,然后再将剩下的数组织成新的堆,通过反复将堆顶的数取出,最终实现了有序的排列。 在此具体的方法是将待排序数组进行简单的二叉树的构造,取下标等于待排序数组长度的一半节点以及其下标的X2后的两个节点,在这三个节点中取数值最大的节点与三个节点中下标最小交换下标作为根节点,其余点作为叶子节点。以此类推继续从中位...原创 2018-10-29 10:46:18 · 134 阅读 · 0 评论