折半查找-Python版(二分查找)

介绍

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

前提

必须待查找的序列有序

时间复杂度

O(log2n)

原理

1)确定该期间的中间位置K 2)将查找的值t与array[k]比较,若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。 3)区域确定过程: 若array[k]>t,由于数组有序,所以array[k,k+1,……,high]>t;故新的区间为array[low, ..., K-1]; 反之,若array[k]<t对应查找区间为array[k+1, ..., high]

1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3# @Date : 2021-03-02 4# @Author : 林末 5# @desc : 二分查找算法,python版 6 7def serach(array, t): 8 array.sort() #排序,保证列表是有序的 9 low = 0 10 height = len(array) - 1 11 while low <= height: 12 k = (low + height) // 2 13 if array[k] < t: 14 low = k + 1 15 elif array[k] > t: 16 height = k - 1 17 else: 18 return k #找到后返回位置 19 return -1 #找不到返回-1 20array = [1, 3, 5, 7, 9, 6, 8, 0] 21print(serach(array, 5))

End

林末:https://www.helloworld.net/linmo

点赞
收藏

评论区

加载中...

相关推荐

javaScript. Dom 基本操作

DOM节点查找jsdocument.getElementById()//通过id查找document.getElementsByTagName()//通过标签名document.getElementsByName()//通过name名查找document.getElementsByClassName("类名")//通过类名获取元素对象documen

【数据结构与算法】—— 二分查找

1.二分查找的概念二分查找指的是在排好序的数组中,找到目标元素。如果元素存在则返回元素的下标,不存在则返回1.下面以升序为例进行简单描述2.查找过程:取数组中间元素与查找元素target比较。如果target等于中间元素则直接返回中间元素的下标,如果target小于数组中间元素则在数组左边查找,如果target大于数组中间元素则在右边查找。重复以上步骤。

java 二分查找算法

二分查找又称折半查找,它是一种效率较高的查找方法。将数列按有序(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。它可以明显减少比较次数,提高查找效率。但是,表中的数据元素必

linux find 命令查找文件和文件夹

查找目录:find/(查找范围)name'查找关键字'typed查找文件:find/(查找范围)name查找关键字print详解:find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

7 二分搜索树的原理与Java源码实现

1折半查找法了解二叉查找树之前,先来看看折半查找法,也叫二分查找法在一个有序的整数数组中(假如是从小到大排序的),如果查找某个元素,返回元素的索引。如下:intarrnewint{1,3,4,6,8,9};在arr数组中查找6这个元素,查到返回对应的索引,没有找到就返回1思想很简单:1先找到数组中间元素ta

二分查找法的递归和非递归的实现

//二分查找法非递归实现,在一个有序的数组中查找e元素的位置,找不到返回1publicstaticintbinarySearch(intdata,inte){intl0;intrdata.length1;while(l<r){

折半查找-Python版(二分查找) - HelloWorld