算法题
夜來风羽声
这个作者很懒,什么都没留下…
展开
-
归并排序及相关题目
5.归并排序及相关题目 归并排序 一、递归实现 取数组的中间值 分别对左右两遍的数组进行相同处理 最后进行合并(重点) 使用辅助数组来记录排序后的结果 将数组分为了左组和右组 通过三个指针来进行标记(i,p1,p2),分别指向的是辅助数组,左组和右组 在p1和p2都不越界的情况下,通过比较p1和p2的数值,如果p1<p2那么就p1对应值给辅助数组,且指向下一个数(p2同理) 最终要么p1越界,要么p2越界,把还没越界的那组后续的数全部赋值到辅助数组中 最后将辅助数组的值填充到原始数组中原创 2021-11-02 17:50:06 · 356 阅读 · 0 评论 -
基础的数据结构及实现
基础数据结构 链表 单向链表的反转 定义pre,next两个指针都指向null,如果头结点不为空 记录头结点的下一结点 头结点指向null pre标记头结点 头结点为next public static Node reverseList(Node head) { Node pre = null; Node next = null; while (head != null) { next = head.next; head.next = pr原创 2021-11-01 10:54:17 · 190 阅读 · 0 评论 -
异或运算运用
3.异或运算 概念: 异或运算:相同为0,不同为1 同或运算:相同以1,不同为0 总结:异或运算 = 无进位相加 性质: 0^N == N N^N == 0 满足交换律和结合律 如何不用额外变量交换两个数 灵活运用异或的两个性质,如果是数组交换的话必须保证互换的两个索引值不相同 public static void main(String[] args) { int a = 19; int b = 6000; System.out.println(a); Sy原创 2021-10-31 17:09:19 · 319 阅读 · 0 评论 -
二分查找的经典例题
二分法 有序数组 有序数组找到指定num 只要左边界不大于右边界,那么就判断数组中间数的值是否等于指定num 如果等于则返回true 如果大于则不要右边 如果小于则不要左边 // 有序数组查找指定数字 public static boolean exists(int[] sortedArr, int num) { if (sortedArr == null || sortedArr.length == 0) { return false; } int L原创 2021-10-31 16:07:34 · 532 阅读 · 0 评论 -
基本排序及对数器
基本排序 冒泡排序 0~N-1 0~N-2 0~N-3 相邻的两个数两两比较,将较大的数排在前面 public static void bubbleSort(int[] arr) { // 0 ~ N-1 // 0 ~ N-2 // 0 ~ N-3 if (arr == null || arr.length < 2) { return; } int N = arr.length; for (int end = N - 1; end >= 0;原创 2021-10-31 14:32:05 · 71 阅读 · 0 评论 -
面试的时候遇到的题
经典递归实现: 题目: 啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒,问:10元钱最多能喝几瓶酒? public class Temp { public static void main(String[] args) { System.out.println(getMaxDrink(10)); } static int maxCount = 0; public static int getMaxDrink(int money) { if (money <= 0) {原创 2021-08-25 16:04:44 · 79 阅读 · 0 评论