zoukankan      html  css  js  c++  java
  • Java数据结构

    1、线性查找(一层 for 循环)O(n)

     1 // 线性查找
     2     public int search(int target) {
     3         // 遍历数组
     4         for (int i = 0; i < elements.length; i++) {
     5             if (elements[i] == target) {
     6                 if (elements[i] == target) {
     7                     return i;
     8                 }
     9             }
    10         }
    11         // 没有找到指定的元素
    12         return -1;
    13     }

    2、二分查找(注意循环的结束条件是开始大于等于结束)O(logn)

     1 public int binarySearch(int target) {
     2         // 记录开始位置
     3         int begin = 0;
     4         // 记录结束位置
     5         int end = elements.length-1;
     6         // 记录中间的位置
     7         int mid = (begin+end)/2;
     8         // 记录目标位置
     9         int index = -1;
    10         // 二分法查找
    11         while (begin < end) {
    12             // 判断中间的这个元素是不是要查找的元素
    13             if (elements[mid] == target) {
    14                 index = mid;
    15                 break;
    16             // 中间这个元素不是要查找的元素
    17             } else {
    18                 // 判断中间这个元素是不是比目标元素大
    19                 if (elements[mid] > target) {
    20                     // 把结束位置调整到中间位置的前一个位置
    21                     end = mid - 1;
    22                 // 中间这个元素比目标元素小
    23                 } else {
    24                     // 把开始位置调整到中间位置的后一个位置
    25                     begin = mid + 1;
    26                 }
    27                 // 取出新的中间位置
    28                 mid = (begin + end)/2;
    29             }
    30         }
    31         return index;
    32     }
  • 相关阅读:
    P3444 [POI2006]ORK-Ploughing
    p4555&bzoj2565 最长双回文串
    bzoj2563 阿狸和桃子的游戏
    p4503&bzoj3555 企鹅QQ
    p3627&bzoj1179 抢掠计划(ATM)
    p2279&bzoj1217 消防局的设立
    p2661 信息传递(Tarjan模板)
    p2071 座位安排
    2B The least round way
    JSK 糟糕的bug
  • 原文地址:https://www.cnblogs.com/GjqDream/p/11576349.html
Copyright © 2011-2022 走看看