zoukankan      html  css  js  c++  java
  • 二分算法

      蓝桥杯结束了。对于结果现在也看开了。以前认为比赛看重过程就是个笑话,现在突然懂了,比赛果然还是过程重要。这里也将这些日子的一些想法和学习的一些比较经典的算法以及题型再次重温一遍。毕竟过程还是重要的。

      下面先讲一个查询的算法。二分算法。

      二分算法主要是利用有序数组排序的特点来进行查找元素,通过每次中间指针和查找元素的大小比较,来判断在数组的左边还是右边进行下一步查找。主要是利用到了分治。

      代码如下:

     1 //二分法算法
     2 import java.util.*;
     3 public class demo2 
     4 {
     5     public static int rank(int key,int[] a)
     6     {
     7         int lo=0;//左指针
     8         int hi=a.length-1;//右指针
     9         while (lo<=hi) 
    10         {
    11             //还有一种(hi-lo)/2+lo 和下面的一样
    12             int mid=(lo+hi)/2;
    13             if(key<a[mid])
    14                 hi=mid-1;//移动右指针,不需要再次查找第mid个元素
    15             else if(key>a[mid])
    16                 lo=mid+1;//移动左指针
    17             else
    18                 return mid;
    19         }
    20         return -1;
    21     }
    22     public static void main (String args[])
    23     {
    24         //可以做一个排序的函数,这里只是简单的二分法
    25         int a[]={1,2,3,4,5,6,7,8};
    26         System.out.print(rank(5, a)+1);
    27     }
    28 
    29 }

      以上就是二分算法,这里算法的实现也可以使用递归。使用递归代码会简洁一些,也容易看懂。使用递归主要注意参数的变化。这个以后再提。

      

  • 相关阅读:
    随意谈谈tcp
    %matplotlib inline 被注释掉后,pycharm不能生成图
    (转)SQL Server 2012 手动安装帮助文档+排错
    (转)线性回归数学推导(详细过程)
    numpy的函数使用
    SQL 测验题目(30道)
    SourceInsight 支持 Python
    (转)GitHub上想下载单个文件方法
    (转)SQL Server 数据类型映射
    数据库的基本使用(C#语言)
  • 原文地址:https://www.cnblogs.com/yanyu01/p/8688163.html
Copyright © 2011-2022 走看看