好贷网好贷款

查找算法总结(一)

发布时间:2016-12-5 16:42:30 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"查找算法总结(一)",主要涉及到查找算法总结(一)方面的内容,对于查找算法总结(一)感兴趣的同学可以参考一下。

静态查找结构主要有两种:顺序查找、折半查找 一、顺序查找:这个就不用说了,一个一个的差吧,很差劲的算法了,时间复杂度是O(n)      public int shunXuSearch( int[] b, int c) {            for ( int i = 0; i < b. length; i++) {                if (b[i] == c) {                    System. out.println( "查到了您想要的结果" + c + ",位置在:" + i);                     return i;               }           }           System. out.println( "sorry!没有查询到您想要的结果!" );            return -1;      } 二、折半查找、二分查找:这个需要查找对象是有序的,每一次都找1/2的部分,查找次数大大的减少了。时间复杂度是O(logN)。    折半查找其实就是一颗二叉树的遍历,其中,中间的元素就是二叉树的根。这里有个问题,如果这个根一年半载才查找一次,而这棵树的叶子需要1秒钟就查找一次,那么这种折半查找是否还有效率呢?就很坑了吧。所以才有了后面的集中查找算法。另外,如果想要添加、或者删除一个数据的时候,整个结构都需要重建,这个代价是不可估量的。      public int binarySearch( int[] b, int c) {            // 这里需要先排序,假设已经是有序的数组了            int low = 0;            int high = b. length - 1;            int middle;            while (low <= high) {               middle = (high + low) / 2;                if (c == b[middle]) {                    System. out.println( "您要找的结果" + c + "已经找到,位置在:" + middle);                     return middle;               } else if (c > b[middle]) {                    low = middle + 1;               } else if (c < b[middle]) {                    high = middle - 1;               }           }           System. out.println( "sorry!这里没有您想要的结果!" );            return -1;      } 二叉树方面的查找算法请看下一篇文章:《查找算法总结(二)》 文章大部分都是总结于这两篇博客,在加上自己的分析: http://hxraid.iteye.com/blog http://blog.csdn.net/v_july_v/article/details/6530142#t0

上一篇:Linux工作队列workqueue实现分析
下一篇:汇编语言(王爽)-实验十二

相关文章

相关评论