![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java算法
sunset_in_paris
这个作者很懒,什么都没留下…
展开
-
算法08——归并排序
public static void mergeSort(int[] arr){ if (arr == null || arr.length < 2){ return; } process(arr, 0, arr.length - 1);}public static void process(int[] arr, int L, int R){ if (L == R){ return; } int mid = L + ((R - L) >> 1); process原创 2021-11-05 16:07:11 · 48 阅读 · 0 评论 -
算法07——生成满足条件的数组
生成特定长度的数组,要求对于任意的i<k<j,满足[i] + [j] != [k] * 2public static int[] makeNo(int size){ if (size == 1){ return new int[] {1}; } int halfSize = (size + 1) / 2; int[] base = makeNo(halfSize); int[] ans = new int[size]; int index = 0; for(; index &原创 2021-11-02 21:46:07 · 158 阅读 · 0 评论 -
算法06——位运算
异或运算异或运算就是无进位相加,以下举例:public static String getBitString(int num){ StringBuilder builder = new StringBuilder(); for (int i = 31; i>=0; i--){ builder.append(String.valueOf((num >> i) & 1)); } return builder.toString();}原创 2021-11-02 21:34:21 · 45 阅读 · 0 评论 -
算法05——打印整数的二进制字符串
着重掌握(num>>i)&1这个操作!public static String getBitString(int num){ StringBuilder builder = new StringBuilder(); for (int i = 31; i>=0; i--){ builder.append(String.valueOf((num >> i) & 1)); } return builder.toString();}...原创 2021-11-02 20:42:35 · 50 阅读 · 0 评论 -
算法04——反转链表
单链表反转public static Node reverseLinkedList(Node head){ Node next = null; Node pre = null; while(head!=null){ next = head.next; head.next = pre; pre = head; head = next; } return pre;}class Node{ public int value; public Node next;原创 2021-11-02 20:27:10 · 39 阅读 · 0 评论 -
算法03——二分查找相关算法题
有序数组中找出指定元素是否存在时间复杂度 O(log2N)O(log_2N)O(log2N)。public static boolean exist(int[] sortedArr, int num){ if (sortedArr == null || sortedArr.length == 0){ return false; } int L = 0; int R = sortedArr.length - 1; int mid = 0; while(L < R){ mid =原创 2021-11-02 16:43:07 · 82 阅读 · 0 评论 -
算法02——选择排序、冒泡排序、插入排序
选择排序思想:每次遍历时,找出最小值,记录最小值的索引,将最小值与待排序部分的头元素互换。过程:遍历数组1 ~ N-1的位置,将最小值索引标记设为0;找出最小值的索引,将其与数组0号数字互换;遍历数组2 ~ N-1的位置,将最小值索引标记设为1;找出最小值的索引,将其与数组1号数字互换;……遍历数组N-1 ~ N-1的位置,将最小值索引标记设为N-2;找出最小值的索引,将其与数组N-2号数字互换。时间复杂度:O(N2)O(N^2)O(N2)public static void selec原创 2021-11-02 15:40:14 · 43 阅读 · 0 评论 -
算法01——时间复杂度
时间复杂度常数时间复杂度如果一个操作的执行时间不以具体样本量为转移,每次执行时间都是固定的,则这样的操作为常数时间复杂度常见的常数时间复杂度操作:常数时间复杂度操作算数运算+、-、*、/、%等位运算>>、>>>、<<、<<<、|、&、^等算数运算+、-、*、/、%等赋值、比较、自增、自减等++、–、>、==等数组寻址arr[i]估计算法的时间复杂度,要将指令拆成常数时原创 2021-11-02 14:57:00 · 59 阅读 · 0 评论