
算法
文章平均质量分 81
# Never Give up &
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
求质数(素数)算法,及算法优化
质数(素数):只能被1和其本身整除的数字(其中1和0不属于质数)接下来我们用多种方法求1000以内(包含1000)的质数数量,并且统计每种方法的循环次数(如果只想知道速度快的方法可以直接看方法五)方法一:循环遍历所有情况int count1 = 0;//质数个数int count2 = 0;//循环次数for(int i=2;i<=1000;i++) { int fla...原创 2019-08-11 10:47:29 · 30910 阅读 · 17 评论 -
循环搭配递归解决八皇后问题
经典的八皇后问题,即在一个8*8的棋盘上放8个皇后,使得这8个皇后无法互相攻击( 任意2个皇后不能处于同一行,同一列或是对角线上),输出所有可能的摆放情况。思路一纯暴力一共有264 种可能。所以暴力法并不是个好办法。最基本的优化:如果当前皇后不满足条件,那么就停止继续往下查找,采用回溯思路二在最开始做这道题时,我想到的优化方法是首先排除在同一行的情况,于是我创建了一个一维数组queen...原创 2019-08-15 17:04:04 · 326 阅读 · 0 评论 -
二维数组转稀疏数组以及还原
二维数组经常用于储存地图(包括一些二D游戏,棋盘等),但在这些情况下使用二维数组时,二维数组中经常会有大量重复元素(我们暂时假设值为0),其他数据在二维数组中所占比例能很小,当我们需要储存该二维数组时(例如游戏存档)就会出现大量的空间浪费,这时我们可以将二维数组转换为稀疏数组。稀疏数组的列数固定为三列,行数为二维数组中特殊值的个数+1(即sparseArr[sum+1][3],sum是特殊值的个...原创 2019-08-16 20:46:48 · 414 阅读 · 0 评论 -
java获取两个字符串的最大相同子串
public class MaxSubstring { public static void main(String[] args) { String str=findMaxSubString("abcwerthelloyuiodef","cvhellobnm"); System.out.println(str); } //提示:将短的那个...原创 2019-08-28 20:53:01 · 783 阅读 · 0 评论 -
归并排序(MergeSort )
归并排序:对数组进行二分法分割,对分割后的数组分别进行排序,然后再将排好序的数组进行合并public class MergeSort { static int count = 0; public static void main(String[] args) { int[] array = {10,9,8,7,6,5,4,3,2,1}; arr...原创 2019-08-29 14:26:06 · 177 阅读 · 0 评论 -
插入排序(InsertionSort )
插入排序每次取出第i个元素array[i],让其与array[0,i-1]之间的元素进行比较(从下标0开始比较),如果遇到大于array[i]的元素arrayj,那么将array[j,i-1]之间的元素统一后移一位,然后将array[i]放入位置jpublic class InsertionSort { public static void main(String[] args) {...原创 2019-08-29 14:29:22 · 192 阅读 · 0 评论 -
快速排序(QuickSort )
快速排序:选取一个基准,将大于基准的值放到右边,小于基准的放到左边,然后在以基准为分割点,将数组分成两部分,每一部分重复之前的方法排序public class QuickSort { public static void main(String[] args) { int[] array = {10,9,8,7,6,5,4,3,2,1}; System...原创 2019-08-29 14:34:19 · 177 阅读 · 0 评论 -
选择排序(SelectionSort)
选择排序(SelectionSort):从头开始遍历,每次都取剩余元素的最小值与当前下标i的值进行交换,每完成一次循环将固定一个元素的位置(第n次循环将确定第n小的数据的位置)将数组分为两部分array[0…i-1]和array[i…n-1],每次循环后的array[0…i-1]都是排好序的表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模...原创 2019-08-29 14:41:28 · 175 阅读 · 0 评论 -
冒泡排序(BubbleSort)
冒泡排序:每次从头开始,比较两个相邻元素,如果第一个比第二个大,那么就交换他们每完成一次循环将固定一个元素的位置(第n次循环将确定第n大的数据的位置),所以下一次循环时可以少循环一个元素(-i)将数组分为两部分array[0…i-1]和array[i…n-1],每次循环后的array[i…n-1]都是排好序的public class BubbleSort { public sta...原创 2019-08-29 14:44:30 · 224 阅读 · 0 评论