Ubuntu LeetCode Jetson Nano Netty 自动化部署 DHCP oauth threejs air 后台管理页面模板 spark项目 teamviewer验证被拒绝 axure组件库下载 office2016修复 java时间戳 matlab输入参数太多 java不定长数组 linux启动mysql命令 python实例 python内置库 python写脚本 python简易教程 python如何调用函数 python编程工具 python命令大全 java文件写入 java获取当前年月 java特性 怎么装linux系统 tar文件怎么打开 快点蛆虫成就单刷 ezcad2 电视免费软件 backtrack3 collect 魔兽地图七个人 源计划艾克 论文修改软件 hzfs edquota
当前位置: 首页 > 学习教程  > 编程语言

常用十大算法_二分查找算法

2020/7/24 9:12:51 文章标签:

 

【常用十大算法】

二分查找算法,分治算法,动态规划算法,KMP算法,贪心算法,普里姆(prim)算法,克鲁斯卡尔(Kruskal)算法,迪杰斯特拉(Dijkstra)算法,弗洛伊德(Floyd)算法,回溯算法。

 

循环实现二分查找

递归实现二分查找已经在前面说了,可以【猛击此处】了解详情

代码实现:

package cn.dataStructureAndAlgorithm.demo.tenAlgorithm.binarySearch;

import java.util.ArrayList;

public class 循环二分查找_binarySearch {
    public static void main(String[] args) {
        int[] data=new int[]{1,2,3,4,4,4,5,6};
        System.out.println(binarySearch(data,4));

    }
    public static ArrayList<Integer> binarySearch(int[] data, int target){
        ArrayList<Integer> result=new ArrayList<>();
        int left=0;
        int right=data.length-1;
        int mid;
        while (left<=right){
            mid=(left+right)/2;
            if (data[mid]==target){
                //同值查找
                //左寻
                int temp=mid-1;
                while (true){
                    if (temp<0 || data[temp]!=target){
                        break;
                    }
                    result.add(temp);
                    temp--;
                }
                //保存中间已匹配到的值
                result.add(mid);
                //右寻
                temp=mid+1;
                while (true){
                    if (temp>data.length-1 || data[temp]!=target){
                        break;
                    }
                    result.add(temp);
                    temp++;
                }
                return result;
            }else if (data[mid]>target){
                right=mid-1;
            }else {
                left=mid+1;
            }
        }
        return result;
    }
}
[3, 4, 5]

 


其他常用算法,见下各链接

【常用十大算法_分治算法】

【常用十大算法_贪心算法】

【常用十大算法_动态规划算法(DP)】

【常用十大算法_KMP算法】

【常用十大算法_普里姆(prim)算法,克鲁斯卡尔(Kruskal)算法】

【常用十大算法_迪杰斯特拉(Dijkstra)算法,弗洛伊德(Floyd)算法】

【常用十大算法_回溯算法】

 

【数据结构与算法整理总结目录 :>】<-- 宝藏在此(doge)  


本文链接: http://www.dtmao.cc/news_show_50025.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?