【常用十大算法】
二分查找算法,分治算法,动态规划算法,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)