随笔分类 - systematic_learning_class01
算法体系学习班
摘要:package class01; /** * 局部最小问题 * <p> * 对于一个数组,使用二分法的前提,一定是这个数组整体有序吗? * 答:不是。局部最小问题就是反例。 */ public class Code07_BSAwesome { public static int getLessInd
阅读全文
摘要:package class01; import java.util.Arrays; /** * 在arr上,返回小于等于targetNum的最右的位置。 * 如果没有则返回-1。 */ public class Code06_BSNearRight { public static int neare
阅读全文
摘要:package class01; import java.util.Arrays; /** * 在arr上,返回arr中大于等于targetNum的最左的位置。 * (如果有,就返回这个最左的索引。如果没有,可以返回-1。) * 使用了二分法。 */ public class Code05_BSNe
阅读全文
摘要:package class01; import java.util.Arrays; /** * 二分法 * 已知一个有序数组arr,和一个数字num。返回数组中是否含有这个数字。(使用二分法) * <p> * 常规二分法的时间复杂度,O(logN)。 * O(log2N),即log以2为底,N的对数
阅读全文
摘要:package class01; import java.util.Arrays; /** * 插入排序 * 概述:先将i指向第二个数(索引为1),将j指向i-1位置,如果j大于等于0,并且arr[j]>arr[j+1],将将arr[j]和arr[j+1]交换。j--。 */ public clas
阅读全文
摘要:package class01; import java.util.Arrays; /** * 冒泡排序 * 概述:每相邻的2个数比较,较大的数向后交换。排到最后一个位置时,它就是整个数组的最大值,第一轮结束。 * 继续从第0位置和第1位置的2个数比较。周而复始。 */ public class C
阅读全文
摘要:package class01; import java.util.Arrays; /** * 选择排序 * 概述:n个数,n次循环(10个数就是10次循环),每次循环找出本轮的最小值,和本轮的第一个位置的数,交换。周而复始。直至该乱序数组有序。 */ public class Code01_Sel
阅读全文