一些简单的算法案例

 判断质数

判断a是不是质数。

  public static boolean yonpn(int a){
      double n = Math.sqrt(a);
      for (int i = 2; i < n; i++) {
          if (a % i == 0){
              return false;
          }
      }
      return true;
  }

排序

冒泡排序

将数组a[ ] 从小到大排序。

    public static void oneSortPro(int[] a) {
        if (a.length == 0) {
            return;
        }
        if (a.length == 1) {
            return;
        }
        int max;
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length; j++) {
                if (a[i] > a[i + 1]) {
                    max = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = max;
                }
            }
        }
    }

        将数组a[ ] 从大到小排序的方法与此类似。

        下边还有一种较为繁琐的方法

    public static void oneSort(int[] a) {
        if (a.length == 0) {
            return;
        }
        if (a.length == 1) {
            return;
        }
        int max;
        while (!yon(a)) {
            for (int i = 0; i < a.length - 1; i++) {
                if (a[i] > a[i + 1]){
                    max = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = max;
                }
            }
        }
    }

    public static boolean yon(int[] a) {
        for (int i = 0; i < a.length - 1; i++) {
            if (a[i] > a[i + 1]) {
                return false;
            }
        }
        return true;
    }

约分

输入分子和分母输出的是String类型的结果

    public static String reduce(int a, int b) {
        for (int i = 1; i < a; i++) {
            if (a % i == 0) {
                if (b % i == 0) {
                    a = a / i;
                    b = b / i;
                }
            }
        }
        String st = a + "/" + b;
        return st;
    }

阶乘

用循环计算

    public static int jiecheng(int n){
        int out = 1;
        for (int i = 1; i <= n; i++) {
            out *= i;
        }
        return out;
    }

用递归计算

    public static int jiechengpro(int n){
        if (n == 1 || n == 0){
            return 1;
        }
        n *= jiechengpro(n - 1);
        return n;
    }

旋转翻折二维数组

旋转

        旋转数组:将数组a[ ][ ]逆时针旋转90°。

    public static int[][] RevolveArray(int[][] a){
        int[][] b = new int[a[0].length][a.length];
        for(int i = 0; i < a.length; i++){
            for(int j = 0; j < a[0].length; j++)
                b[a[0].length - 1 - j][i] = a[i][j];
        }
        return b;
    }

        旋转数组:将数组a[ ][ ]顺时针旋转90°。

    public static int[][] RevolveArray(int[][] a){
        int[][] b = new int[a[0].length][a.length];
        for(int i = 0; i < a.length; i++){
            for(int j = 0; j < a[0].length; j++)
                b[j][a.length - 1 - i] = a[i][j];
        }
        return b;
    }

        旋转数组:将数组a[ ][ ]旋转180°。

    public static int[][] RevolveArray(int[][] a){
            int[][] b = new int[a.length][a[0].length];
            for(int i = 0; i < a.length; i++){
                for(int j = 0; j < a[0].length; j++)
                    b[a.length - 1 - i][a[0].length - 1 - j] = a[i][j];
            }
            return b;
    }

 翻折

        将数组a[ ][ ]沿 \ 线翻折。

    public static int[][] FoldArray(int[][] a){
        int[][] b = new int[a[0].length][a.length];
        for(int i = 0; i < a.length; i++){
            for(int j = 0; j < a[0].length; j++)
                b[j][i] = a[i][j];
        }
        return b;
    }

        将数组a[ ][ ]沿 / 线翻折。

    public static int[][] FoldArray(int[][] a){
        int[][] b = new int[a[0].length][a.length];
        for(int i = 0; i < a.length; i++){
            for(int j = 0; j < a[0].length; j++)
                b[a[0].length - 1 - j][a.length - 1 - i] = a[i][j];
        }
            return b;
    }

其他

在数组a[ ]末尾加入数字

如果数组a[ ]已满可以用以下方法在数组末尾加入数据。(效率较低)

    public static int[] add(int[] a, int... n) {
        int[] b = new int[a.length + n.length];
        System.arraycopy(a, 0, b, 0, a.length);
        System.arraycopy(n, 0, b, a.length, n.length);
        return b;
    }

判断数组a[ ] 是否已经从小到大排好序

    public static boolean yon(int[] a) {
        for (int i = 0; i < a.length - 1; i++) {
            if (a[i] > a[i + 1]) {
                return false;
            }
        }
        return true;
    }

 判断是否从大到小是否排好序只需将if中的>改成<即可

判断年份y是不是闰年

仅限1582年以来的。

    public static boolean runnian(int y) {
        if (y % 400 == 0) {
            return true;
        } else return y % 4 == 0 && y % 100 != 0;
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值