数组查找操作

数组常见的查找操作如下:

  1. 需求:给一个数组,查找某个元素在数组中的位置,如果该元素不存在,则返回-1。
    //正常查找元素
    public int getIndex(int[] arr, int key) {
    for(int i=0; i<arr.length-1; i++) {
    if(key==arr[i])
    return i;
    }
    return -1;
    }
    特点:通用,从第一个元素开始依次比较,效率一般
  2. 需求:给一个有序数组,查找某个元素在数组中的位置,如果该元素不存在,则返回-1。
    方式1:
    public int getIndex(int[] arr, int key) {
    int min=0;
    int max=arr.length-1;
    while(min<=max) {
    int mid=(min+max)/2;
    if(key>arr[mid])
    min=mid+1;
    else if(key<arr[mid])
    max=mid-1;
    else
    return mid;
    }
    return -1;
    }
    方式2:
    public int getIndex(int[] arr, int key) {
    int min=0;
    int max=arr.length-1;
    int mid=(min+max)/2;
    while(key!=arr[mid]) {
    if(key>arr[mid])
    min=mid+1;
    else if(key<arr[mid])
    max=mid-1;
    if(min>max)
    return -1;
    mid=(min+max)/2;
    }
    return mid;
    }
    特点:快速排序的前提是数组有序,效率高。
  3. 需求:给一个有序数组,将一个元素插入数组中保证数组有序。
    public int getIndex(int[] arr, int key) {
    int min=0;
    int max=arr.length-1;
    while(min<=max) {
    int mid=(min+max)/2;
    if(key>arr[mid])
    min=mid+1;
    else if(key<arr[mid])
    max=mid-1;
    else
    return mid;
    }
    return min;
    }
    思路:先查找该元素是否存在数组中,如果存在,返回在数组中的索引,如果不存在,数组不能再折半情况下,返回数组的最小索引。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 但成功真的那么重要吗? 图片上这个段子真实程度如此,中国父母对子女教育的态度跃然纸上,归根结底就是两个字:成功——...
    中和黄埔阅读 1,571评论 0 0
  • #(泪)现在已经三年级的我们就要毕业了,想起了三年前的开始(人名是化名,以单字来代替全名,(生活中全叫全名的)内容...
    薇莱特toop阅读 1,850评论 0 0
  • 其实不太准确吧,因为好像也没什么别的好的选择。 毕竟未来是我们的动机之源。尽管绝望看起来更能解释我们所有人注定...
    stoner_lq阅读 3,355评论 0 0
  • 记得在段子里面看过一视频,是一个街头采访的报道,问题是“你会选什么样的人当做备胎”?当我看完后感到十分震惊,大...
    爱笑的猫灬阅读 4,198评论 2 2

友情链接更多精彩内容