zoukankan      html  css  js  c++  java
  • 二分查找算法 (和递归排序算法)

    package cn.itcast.day04.demo04;
    
    import java.nio.charset.MalformedInputException;
    
    /**
     * 插入排序算法   and 二分查找 算法
     * 
     *
     */
    public class DemoInsertionSort {
        /**
         * 插入排序
         * @param arr
         */
        public static void insertion(int[] arr){
            if(arr.length<2||arr==null){
                return;
            }
            for(int i = 1; i < arr.length; i++) {
                for(int j=i-1;j>=0&&arr[j]>arr[j+1];j--){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    
        public static void main(String[] args) {
            int[] test={6,9,5,3,12};
            insertion(test);
            System.out.println("数组已经排列完成:");
            for (int i = 0; i < test.length; i++) {
                System.out.print(test[i]+"  ");
            }
            //排好序的数组
            int c=choose(test,13,0,test.length-1);
            System.out.println();
            System.out.println("您查找的数据存在::"+c);
        }
    
        /**
         * 二分查找
         * @param arrs  有序数组
         * @param key   目标数值
         * @param L     左边 index
         * @param R     右边 index
         * @return      返回值 查找不到就是 -1 
         */
        public static int choose(int[] arrs,int key,int L,int R){
            while(L<=R){
                int minIndex=(L+R)/2;
                if(arrs[minIndex]<key){
                    L=++minIndex;
                }else if(arrs[minIndex]>key){
                    R=--minIndex;
                }else {
                    return minIndex;  返回目标数值的索引
                }
            }
            return -1;      如果未找到目标数值就返回 -1
        }
    
    }
    /**
    * 二分查找(递归方法)
    * @param arr 有序数组
    * @param key 目标数值
    * @param L 左边索引
    * @param R 右边索引
    * @return 返回值 查找不到返回 -1
    */
    public static int engry(int[] arr,int key,int L,int R){
    if(L<=R){
    int minIndex=(L+R)/2;
    if(arr[minIndex]<key){
    return engry(arr,key,minIndex+1,R);
    }else if(arr[minIndex]>key){
    return engry(arr,key,L,minIndex-1);
    }else if(arr[minIndex]==key){
    return minIndex;
    }
    }
    return -1;
    }
     
  • 相关阅读:
    Wireshark的简介
    Node.js + Express 构建的订餐系统
    java 文件下载支持中文名称
    java判断A字符串中是否包含B字符
    Java查询目录下的所有文件(包括子目录)
    Java从指定URL下载文件并保存到指定目录
    Java逻辑分页代码
    JS实现文字向上无缝滚动轮播
    JAVA调用外部安装7-Zip压缩和解压zip文件
    Zip文件和RAR文件解压
  • 原文地址:https://www.cnblogs.com/axu521/p/10447087.html
Copyright © 2011-2022 走看看