Algorithm
阿怪的怪蜀黍
Talk is cheap, show me the code!
展开
-
Java 希尔排序
/** * 希尔排序 * * @Author ZhangGJ * @Date 2020/12/18 06:29 */public class Shell { public static Comparable[] sort(Comparable[] a) { int n = a.length; int h = 1; while (h < n / 3) { h = 3 * h + 1; }原创 2020-12-18 06:45:10 · 142 阅读 · 0 评论 -
Java 插入排序
/** * 插入排序 * * @Author ZhangGJ * @Date 2020/12/17 07:37 */public class Insertion { public static Comparable[] sort(Comparable[] a) { int n = a.length; for (int i = 1; i < n; i++) { for (int j = i; j > 0 &&am原创 2020-12-17 08:21:59 · 83 阅读 · 0 评论 -
Java 选择排序
首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换),其次,在剩下的元素中找到最小元素,将它与数组的第二个元素交换位置。如此往复,知道整个数组排序,这种算法叫做选择排序,因为它在不断地选择剩余元素中的最小者。交换元素的代码写在内循环之外,每次交换都能排定一个元素,因此交换的总次数是n,所以算法的时间效率取决于比较的次数。对于长度为n的数组,选择排序需要大约n²/2次比较和n次交换。特点:1.运行时间和输入无关。一个已经排序的数组和一个.原创 2020-12-17 07:34:41 · 136 阅读 · 0 评论 -
Java Dijkstra双栈算数表达式求值算法
/** * ( 1 + ( ( 6 - 3 ) * ( 10 / 5 ) ) ) * * @Author ZhangGJ * @Date 2020/12/15 07:24 */public class Evaluate { public static void main(String[] args) { Stack<String> operator = new Stack<>(); Stack<Double> value原创 2020-12-15 22:53:45 · 175 阅读 · 1 评论 -
Java 计算调和级数
/** * 调和级数 * * @Author ZhangGJ * @Date 2020/12/06 21:22 */public class HarmonicProgression { public static double harmonic(int number) { double sum = 0.0; for (int i = 0; i <= number; i++) { sum += 1.0 / i;原创 2020-12-06 21:27:43 · 384 阅读 · 2 评论 -
Java 计算平方根(牛顿迭代法)
/** * @Author ZhangGJ * @Date 2020/12/06 21:01 */public class SquareRoot { public static double sqrt(double number) { if (number < 0) { return Double.NaN; } double err = 1e-15; double t = number;原创 2020-12-06 21:19:45 · 311 阅读 · 0 评论 -
Java 是否是素数
/** * @Author ZhangGJ * @Date 2020/12/06 11:36 */public class PrimeNumber { public static boolean isPrimeNumber(int number) { boolean result = true; if (number < 2) { result = false; } for (int i = 2;原创 2020-12-06 21:00:43 · 75 阅读 · 0 评论 -
Java 典型数组操作算法
典型数组处理代码1、颠倒数组元素的顺序2、矩阵相乘二维数组:1、颠倒数组元素的顺序/** * @Author ZhangGJ * @Date 2020/12/06 09:59 */public class ArrayReverseOrder { private static int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; /** * 颠倒数组元素的顺序 * * @param original *原创 2020-12-06 11:35:25 · 66 阅读 · 0 评论 -
Java 欧几里得算法(Euclid Algorithm)
自然语言描述: 计算两个非负整数p和q的最大公约数:若q是0,则最大公约数为p。否则,将p除以q得到余数r,p和q的最大公约数即为q和r的最大公约数。/** * @Author ZhangGJ * @Date 2020/12/06 09:18 */public class Euclid { public static int euc(int p, int q) { if (q == 0) { return p; }原创 2020-12-06 09:28:18 · 326 阅读 · 0 评论