
Java基础算法
scuwangjun
谦虚,谨慎,爱学习
展开
-
数字全排列
数字全排列 问题描述 给一个不重复的数字数组,写一个程序,输出全排列。 比如给定数组: [1, 2, 3] 输出: [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1] 解决思路 这个问题很经典,接下来尝试使用数学归纳法的思想来解决这个问题。 在中学的时候,我们就知道一个长度为n的数列有n!个排列。...原创 2018-05-07 23:50:01 · 3824 阅读 · 0 评论 -
Java排序之计数排序
Java排序之计数排序 1. 计数排序思路 计数排序适用于有明确范围的数组,比如给定一个数组,且知道所有值得范围是[m,n]。这个时候可以使用一个n-m+1长度的数组,待排序的数组就可以散在这个数组上,数组的值就是当前值的个数,再经过一次遍历展开,得到的数组就有序了。 新建一个长度为n-m+1的临时数组 遍历待排序数组,它的值-m作为临时数组下角标,这个位置的值加1 遍历结束,临时数组...原创 2018-06-04 18:44:47 · 2276 阅读 · 0 评论 -
Java排序之归并排序
Java排序之归并排序 1. 简介 归并排序的算法是将多个有序数据表合并成一个有序数据表。如果参与合并的只有两个有序表,则成为二路合并。对于一个原始的待排序数列,往往可以通过分割的方法来归结为多路合并排序。 2. 归并排序思路 将长度为n的待排序数组看做是由n个有序长度为1的数组组成 将其两两合并,得到长度为2的有序数组 然后再对这些子表进行合并,得到长度为4的有序数组 重复上述...原创 2018-06-06 12:55:23 · 3934 阅读 · 0 评论