![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
查找与排序
海伦•
求知若渴,大智若愚
展开
-
递归形式进行插入排序
注意要点:要限制k >= 0 并且 要在 end < a[k] 之前 最后要 k ++import java.util.Scanner;public class 递归形式进行插入排序 { public static int[] a; public static int n; public static void main(String[] args) { S...原创 2019-04-16 19:22:32 · 344 阅读 · 0 评论 -
计数排序
分析:当数字范围一定,规模比较大的情况下我们可以采用以空间换时间的方法(计数排序)import java.util.Arrays;public class Main { public static int n = 10000000; public static int a[] = new int[10000001]; public static int b[] = new int...原创 2019-04-18 15:54:58 · 79 阅读 · 0 评论 -
调整数组顺序_奇数在左偶数在右
利用快排的思想将其左右成两分块,使指针在两端切换并且要先判断指针是否在指定范围内,再才能判断大小,要不然很容易越界快速排序public class Main { public static int a[] = {2,21,2,13,1,13,22,1313,13,2}; public static void main(String[] args) { for(int ...原创 2019-04-17 21:52:34 · 289 阅读 · 0 评论 -
快速排序
注意:在每次移动指针时要判断条件左边小于右边 每完成一次快排,就将该组数以起始第一个数为边界,左边为大于他的数,右边为小于他的数 public class Main { public static int a[] = {2,21,2,13,1,13,1313,1313,13,2}; public static void main(String[] args) { f...原创 2019-04-17 21:41:56 · 88 阅读 · 0 评论 -
快速设计一个a的n次幂的算法(经典例题)
分析:每次进行翻倍的话也就是目的次数折半,就可以将算法的时间复杂度简化到O(logn) 实现方法第一次翻2倍,第二次4倍,...,第n次2的n次方倍。就可以达到目的public class Main { public static void main(String[] args) { int result = powI(2,20); Sy...原创 2019-04-17 20:26:10 · 1882 阅读 · 0 评论 -
2的幂表与基础排序算法的性能比
冒泡排序的时间复杂度:O(n2) Arrays.sort的时间复杂度:O(nlogn)import java.util.Arrays;public class Main { public static int a[] = new int[10000* 10 ]; public static int n = 10000 * 10; public sta...原创 2019-04-17 19:32:39 · 102 阅读 · 0 评论 -
顺序查找与二分查找时间复杂度的比较
注意要点:通过System.currentTimeMills();来获取当前时间,来计算该算法运行运算时间顺序查找的时间复杂度为O(n) 二分查找的时间复杂度为O(log(n))但两者的运行时间的结果却千差万别,可知当计算量很大的情况下算法优化的必要性。import java.util.Arrays;public class Main { public static ...原创 2019-04-17 14:10:51 · 11548 阅读 · 2 评论 -
希尔排序
也称为缩小增量排序算增量 根据分组 对每一个组进行插入排序import java.util.Scanner;public class Main { public static int a[]; public static int n; public static void main(String[] args) { Scanner sca = new Scanner(S...原创 2019-04-16 21:46:45 · 58 阅读 · 0 评论 -
汉罗塔
找公式找重复:划分子方法,将n 分为第n 个盘 和 n - 1 个盘两部分 找变化:变化的是盘子的个数,和它的起始柱子,目标柱子和辅助柱子得出要使用的递归参数dfs(int n ,String from ,String to,String help)找出口n == 1 跳出import java.util.Scanner;public class Main { publ...原创 2019-04-16 21:15:44 · 314 阅读 · 0 评论