随笔分类 -  数据结构与算法

摘要:package demo; import java.util.Arrays; public class P47 { //堆必定是完全二叉树,小顶堆任意父节点小于等于其子节点,大顶堆则是大于等于 //堆排序(以小顶堆为例,用大顶堆结果才是递增) 分为两步:堆化、按序输出 //堆化:从倒数第二行有子节点 阅读全文
posted @ 2022-05-02 19:52 fighterk 阅读(158) 评论(0) 推荐(0) 编辑
摘要:package demo; public class P45 { //完全二叉树的先根、中根、后根遍历 static void preOrder(int[] arr,int index){ if(index>=arr.length) return; System.out.print(arr[inde 阅读全文
posted @ 2022-05-02 19:51 fighterk 阅读(142) 评论(0) 推荐(0) 编辑
摘要:package demo; public class P43 { //乱序整型数组,元素为在用的id(从1开始),求最小空余可用id //思路1:创建(length+1)数组,下标对应id,id<=length且用过则值设为1 //思路2:用分区法,不断二分。如果下标+1==id,说明左区和mid都 阅读全文
posted @ 2022-05-02 19:50 fighterk 阅读(20) 评论(0) 推荐(0) 编辑
摘要:package demo; public class P40 { //乱序数组,有一个数字个数超过数组的一半,求该数字 //思路:不同数字抵消次数的最后结果,或者分区找第(length/2)小的数字 //变种:出现次数为总数一半 //思路:分为目标是最后一个/不是的情况,对最后一个数出现次数计数。 阅读全文
posted @ 2022-05-02 19:46 fighterk 阅读(32) 评论(0) 推荐(0) 编辑
摘要:package demo; import java.util.Arrays; public class P37 { //归并排序,重点在于子问题合并 //思路:辅助空间拷贝整个数组,左区开头、右区开头各有一个指针,比较后较小的值放回原数组,对应指针和原数组指针右移。 public static vo 阅读全文
posted @ 2022-05-02 19:45 fighterk 阅读(25) 评论(0) 推荐(0) 编辑
摘要:package demo; public class P39 { //找出乱序数组中第k小的数字 //思路:利用快排中的分区方法,下标为a-1的主元就是第a小的数字,比较a和k,再到k在的那一边用分区找 //这样比快排更优,因为分区过程中排除了没用的部分 public static void mai 阅读全文
posted @ 2022-05-02 19:45 fighterk 阅读(36) 评论(0) 推荐(0) 编辑
摘要:package demo; public class P30 { //设计求a的n次方的算法 //用a*a、a平方*a平方、a的四次方*a的四次方的速度逼近;剩下的次数用递归计算 public static void main(String[] args) { System.out.println( 阅读全文
posted @ 2022-05-02 19:44 fighterk 阅读(118) 评论(0) 推荐(0) 编辑
摘要:package demo; import java.util.Arrays; public class P33 { //快速排序属于分治法的一种。 //思路:分解时确保主元左边都小于等于主元、右边都大于主元。然后递归地对左边、右边再进行排序。最后结果不用再合并。 public static void 阅读全文
posted @ 2022-05-02 19:44 fighterk 阅读(16) 评论(0) 推荐(0) 编辑
摘要:package demo; public class P28 { //一个有序字符串数组,其中散布着空字符串。编写程序,求指定字符串的索引 //因为字符串有序,所以采用二分法思路,规定中点为空串时右移 public static void main(String[] args) { String[] 阅读全文
posted @ 2022-05-02 19:43 fighterk 阅读(31) 评论(0) 推荐(0) 编辑
摘要:package demo; import java.util.Scanner; public class P26 { //上n阶楼梯,每次走1/2/3步,计算多少种走法 //从终点开始倒推,最后一次走可能从n-1/n-2/n-3阶走上来,f(n)=f(n-1)+f(n-2)+f(n-3), publ 阅读全文
posted @ 2022-05-02 19:42 fighterk 阅读(107) 评论(0) 推荐(0) 编辑
摘要:package demo; public class P13 { public static void main(String[] args) { System.out.println(fib(5)); } //求斐波那契数列的第n个数字 static int fib(int n) { if(n== 阅读全文
posted @ 2022-05-01 21:38 fighterk 阅读(5) 评论(0) 推荐(0) 编辑
摘要:package demo; public class P3q1 { public static void main(String[] args) { int a=5; int b=10; System.out.println("[a]"+a+"[b]"+b); //三次异或,交换a、b的值 a=a^ 阅读全文
posted @ 2022-05-01 21:37 fighterk 阅读(11) 评论(0) 推荐(0) 编辑
摘要:package packageA; interface ILink<A> { public void add(A data); // 增加节点 public int getLength(); // 获取节点个数 public boolean isEmpty(); // 判断链表是否为空 public 阅读全文
posted @ 2022-05-01 21:36 fighterk 阅读(7) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示