当前位置: 代码迷 >> 综合 >> 常用十大算法_二分查找算法
  详细解决方案

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

热度:85   发布时间:2024-01-31 13:49:55.0

 

【常用十大算法】

二分查找算法,分治算法,动态规划算法,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)  

  相关解决方案