首页 > 编程语言 >JAVA常见算法

JAVA常见算法

时间:2022-12-21 00:12:06浏览次数:49  
标签:arr JAVA int 常见 param 待查 算法 static dist

package com.example.cesium.utils;

public class demo {

    /**
     * 二查分算法
     * 半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置
     * 的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,
     * 则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字
     *
     * @param arr
     * @param dist
     * @return
     */
    private static int getIndex(int[] arr, int dist) {
        int start = 0;
        int end = arr.length - 1;
        while (start <= end) {
            int middle = (start + end) / 2;
            int val = arr[middle];
            if (dist == val) {
                return middle;
            } else if (dist < val) {
               end = middle - 1;
            }else {
                start = middle + 1;
            }
        }
        return -1;
    }

    /**
     * 冒泡排序算法
     * 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
     * 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
     * 针对所有的元素重复以上的步骤,除了最后一个。
     * 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
     * @param arr
     */
    private static void getMaoPao(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            int temp;
            for (int j = 0; j < arr.length -1 -i; j++) {
                  if(arr[j] > arr[j+1]){
                     temp = arr[j+1];
                     arr[j+1] = arr[j];
                     arr[j] = temp;
                  }
            }
        }
    }

    private static void printArr(int[] arr , int n){
        for (int i = 0; i < n; i++) {
            System.out.print(arr[i]+",");
        }
        System.out.println();
    }

    /**
     * 插入排序算法
     *
     * 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入
     *
     * @param arr
     * @param len
     */
    private static void charu(int[]arr,int len){
        for (int i = 0; i < len; i++) {
            int i1 = arr[i];
            int j = i - 1;
            while (j>=0 && i1 < arr[j]){
                arr[j+1] = arr[j];
                j --;
            }
            arr[j+1] = i1;
            printArr( arr , len);
        }
    }

    public static void main(String[] args) {
        int[] arr = {1,2,3,5,7,10,16,27,31};
        int dist = 1;
        System.out.println(getIndex(arr, dist));

        int[]arr2 = {10,4,7,3,1};
        getMaoPao(arr2);
        printArr(arr2 , arr2.length);

        int[]arr3 = {10,8,11,7,4,12,9,6,5,3};
        charu(arr3,arr3.length);
    }
}

 

标签:arr,JAVA,int,常见,param,待查,算法,static,dist
From: https://www.cnblogs.com/charkey/p/16995393.html

相关文章

  • 吃透JAVA的Stream流操作,多年实践总结
    在JAVA中,涉及到对数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理。例如,现在有这么一个需求:从给定句子......
  • java oop
    1.类与对象类是一个模板:抽象,对象是一个具体的实例2.方法定义,调用:3.对象的引用引用类型:基本类型(8)对象是通过引用来操作的:栈-->堆4.属性:字段Field成员变量默认初始......
  • Java多线程批量操作,居然有人不做事务控制?
    前言公司业务中遇到一个需求,需要同时修改最多约5万条数据,而且还不支持批量或异步修改操作。于是只能写个for循环操作,但操作耗时太长,只能一步一步寻找其他解决方案。具体......
  • 手把手教你如何通过Java给图片添加文字和图片水印
    我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情本文首发于个人网站前言最近工作上有个需求,动态生成一张图片,具体来说就是基于模版图片动......
  • 第一百一十六篇: JavaScript理解对象
    好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.关于对象ECMA-262将对象定义为一组属性的无序集合。严格来说,这意味着对象就是一组没有特......
  • [算法][解析几何]覆盖最多点固定半径圆问题 POJ1981 圆的扫描线 详细解法
    引题: 覆盖最多点固定半径圆问题改编自POJ1981CircleandPoint 背景:在二维平面中给定n个点,求半径为r的圆最多可以覆盖多少个点(1<=n<=300,精度eps=0.0001)输入......
  • java.lang.ClassNotFoundException: javax.servlet.Filter
    java.lang.ClassNotFoundException:javax.servlet.Filter:有两个原因:(1)在maven中的作用域,不能是provided,需要是compile就是默认的scope(2)spring-boot-starter-tomcat的版本bu......
  • Java中 Long 与 Integer 之间的转换 [ClassCastException:Long cannot be cast to i
     [ClassCastException:Longcannotbecasttointeger]有时数据库操作时经常会遇到这个问题,Long和Integer 都是java中的包装类型,包装类型是不能强制转换的。//Inte......
  • java中 JSONArray 与 List 相互转换
     1.JSONArray转ListList<T>list=JSONObject.parseArray(array.toJSONString(),T.class);//转换语句1 List<T>list=JSONArray.parseArray(array.toJSONString......
  • 【关于Java中方法重写的注意事项】
    需要重写的场景:源代码封装方法无法满足我们的需要,可以通过重写方法解决。注意事项:一般来说,子类只能够重写父类的声明为public和protected的非final方法,如果需要重写......