`

二分查找插入

 
阅读更多

算法分析

       在有序数组中使用二分查找,如果没有找到则进行插入。

 

public class BinarySearchInsert{
    public static void main(String args[]){
      int search = 0;
      int[] src = {1,2,3,4,5,6,7,8,9,10};
      Map<String,String> result = binarySearch(src,search);
      if("Y".equals(result.getString("isFind"))){
         System.out.println("value was found,index is :" + result.getString("index"));
      }else{
         insertArray(src,search,Integer.parseInt(result.getString("index")));
      }
    }
    public static void binarySearch(int[] src,int search){
       Map<String,String> result = new HashMap<String,String>();
       int left = 0;
       int right = src.length;
       while(left <= right){
          int middle = (left + right)/2
          if(src[middle] == search){
              result.put("isFind","Y");
              result.put("index",String.valueOf(middle));
              return result;
          }else if(src[middle] > search){
              left = middle + 1;
          }else{
              right = middle - 1;
          }
       }   
       result.put("isFind","N");
       result.put("index",String.valueOf(left))
       return -1;
    }
    public static void insertArray(int[] src,int value,int index){
        int[] dec = Array.copyOf(src,src.length + 1);
        int decL = dec.length;
        while(index <= decL){
            if(index == decL){
               dec[decL] = value;
               break;
            }
            dec[decL] = dec[decL-1];
            decL--;
        }
    }
}

 

分享到:
评论

相关推荐

    二分查找的C实现

    二分查找的C实现

    java二分查找插入法

    当你需要构建一个大的有序队列,用插入发太慢了,可以先用二分查找法,找到在队列要插入的位置,把数后移一下,然后放进去。比较效率,下面是java使用示例,需要的朋友可以参考下

    二分查找代码

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表...

    数据结构实验六(二分查找、Hash查找)题目和源程序

    1.二分查找又称为折半查找,它要求要查找的顺序表必须是有序表,即表中结点按关键字有序.并且要用顺序存储结构。 基本思想是:首先将给定值key与表中中间位置记录的关键字相比较,若二者相等,则查找成功,否则...

    java二分查找

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素...

    二分查找和二叉排序树(C++实现)

    二分查找(C++):查找过程中能够记录比较元素的下标并输出 二叉排序树(C++):建立;显示结点、插入元素、删除元素。

    合工大数据结构查找实验

    (1) 对下列数据表,分别采用二分查找算法实现查找,给出查找过程依次所比较的元素,并以二分查找的判定树来解释。 (2) 设计出在二叉排序树中插入结点的算法,在此基础上实现构建二叉排序树的算法。 (3) 设计算法在...

    顺序查找表 二分查找表 折半查找表 二叉排序树 C#源代码

    顺序查找表 二分查找表 折半查找表 二叉排序树 C#源代码 注意二叉排序树只实现了查找和插入算法,使用Visual Studio 2008开发

    能二分查找的链表---跳表 的C++实现

    跳表是一种既支持快速查找,又支持动态插入删除的数据结构,它通过在链表的基础上增加链来提高查找的性能。本程序用C++实现了跳表的查找,插入跟删除操作。

    模拟实验-C#版基于二分查找的稳定“插入排序”算法

    程序模拟实验所用到的所有源码,包括冒泡排序,插入排序,代码运行时长统计等。

    用c语言设计查找算法

    二叉排序树:更新二叉排序树、查找结点、插入结点、删除结点、中序输出排序树 、返回 查找算法:顺序查找、二分查找、二插排序树、返回

    C语言归并、选择、直接插入、希尔、冒泡、快速、堆排序与顺序、二分查找排序.rar

    C语言中常见的排序算法包括归并排序、选择排序、直接插入排序、希尔排序、冒泡排序、快速排序、堆排序以及顺序查找和二分查找。这些排序算法各有特点,在不同情况下有着不同的应用场景和性能表现。 归并排序(Merge...

    合肥工业大学数据结构试验七查找

    &lt;1&gt; 对下列数据表,分别采用二分查找算法实现查找,给出查找过程依次所比较的元素(的下标),并以二分查找的判定树来解释。 &lt;2&gt; 设计出在二叉排序树中插入结点的算法,在此基础上实现构建二叉排序树的算法。 &lt;3&gt; ...

    数据结构与算法.xmind

    二分查找插入,找合适位置的时候使用二分查找算法 希尔排序 思想 用增量来将数组进行分隔,直到增量为1。底层干的还是插入排序干的活 做法 最外层for外循环控制增量的数量,...

    第六课_二分查找与二叉查找树.pdf

    二分法查找法以及和二叉树查找的联系,部分二分搜索和二叉查找树的相关题目: 插入位置;区间查找;旋转位置查找;二叉查找树的编码和解码;逆序数的解题方法和代码实现

    C++二分查找(折半查找)算法实例详解

    本文实例讲述了C++二分查找(折半查找)算法。分享给大家供大家参考,具体如下: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。 因此,折半查找...

    基于二分查找的有序符号表.zip_bst_基于二分查找的有序符号表_有序符号表_链表python实现

    基于平行数组与二分查找的有序符号表是《算法》中的经典查找算法,本程序使用 Python 语言,实现有序符号表。 ST.py 包含两个类,ST 和 OrderedST。 ST是无序的符号表,基于链表实现。按照顺序将键值对插入链表。 ...

    搜索插入位置(二分查找)1

    搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。示例 1:输入: [1,3,

    binary_hash.rar_二分查找

    查找表源码,其中包含两个独立的程序: (1)哈希(Hash)表操作测试程序 (2)二分查找法测试程序 用C语言编译器编译后可以直接运行,功能包括查找、插入、删除等操作。

Global site tag (gtag.js) - Google Analytics