Java使用分治算法实现排序数索引功能示例【二分搜索】
2017-09-16 11:11
831 查看
本文实例讲述了Java使用分治算法实现排序数索引功能。分享给大家供大家参考,具体如下:
/** * Find the first q and return the index * First method is brutal force * Second may * be Divid and Conquer * * @author open201 * */ public class Ono { /** * f(n) = s.length = n; * * @param s * @param q * @return */ public static int BrutalForceSearch(int[] s, int q) { for (int i = 0; i < s.length; i++) { if (q == s[i]) return i; } return -1; } /** * f(n) = log(n) * * @param s * @param q * @return */ public static int DCSearch(int[] s, int q, int startIndex, int endIndex) { if (startIndex > endIndex) return -1; else { int mid = (startIndex + endIndex) / 2; if (s[mid] == q) return mid; else { if (s[mid] > q) return DCSearch(s, q, startIndex,mid-1); else return DCSearch(s, q, mid+ 1,endIndex); } } } public static void main(String[] args) { int [] s = new int[10000000]; for(int i = 0;i<10000000;i++){ s[i] = i; } int q = 10000000-1; long startTime = System.currentTimeMillis(); System.out.println(BrutalForceSearch(s, q)); long endTime = System.currentTimeMillis(); System.out.println(endTime-startTime); startTime = System.currentTimeMillis(); System.out.println(DCSearch(s, q, 0, s.length - 1)); endTime = System.currentTimeMillis(); System.out.println(endTime-startTime); } }
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- Java 分治算法实现排序数索引(二分搜索)
- Java使用观察者模式实现气象局高温预警功能示例
- Java使用组合模式实现表示公司组织结构功能示例
- Java中使用Comparable和Comparator实现字段排序功能
- 使用Vue.js实现表格的排序和搜索功能
- Angularjs过滤器实现动态搜索与排序功能示例
- C#使用dir命令实现文件搜索功能示例
- c#使用Lucene.net创建索引,实现搜索的代码示例
- java 使用正则Pattern等实现【搜索 -> 提取 -> 分割 -> 替换】功能
- Java基于二叉查找树实现排序功能示例
- java 使用正则Pattern等实现【搜索 -> 提取 -> 分割 -> 替换】功能
- Python使用sort和class实现的多级排序功能示例
- 使用ElasticSearch6.0快速实现全文搜索功能的示例代码
- java实现ArrayList根据存储对象排序功能示例
- java使用Hex编码解码实现Aes加密解密功能示例
- Java使用正则表达式实现找出数字功能示例
- Android 使用RecyclerView实现(仿微信)的联系人A-Z字母排序和过滤搜索功能
- ThinkPHP使用getlist方法实现数据搜索功能示例
- 字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础
- 使用javascript操作多选列表框,实现动态增加删除,左右移动,上下排序移动等功能。