検索
ホームページよくある問題二分探索アルゴリズム
二分探索アルゴリズムJun 03, 2019 pm 04:12 PM
二分探索

二分探索は二分探索とも呼ばれ、より効率的な検索方法です。ただし、二分探索では、線形テーブルが逐次記憶構造を採用し、テーブル内の要素がキーワード順に配置されている必要があります。

二分探索アルゴリズム

#検索処理

まず、テーブル内の要素が昇順に並んでいると仮定して、キーを記録します。テーブルの中央 単語と検索キーワードが比較され、両者が等しい場合、検索は成功します。そうでない場合は、中央の位置のレコードを使用してテーブルが最初と最後のサブテーブルに分割されます。中間位置に記録されているサブテーブルが検索キーワードより大きい場合は前のサブテーブルをさらに検索し、そうでない場合はさらに次のサブテーブルを検索します。条件を満たすレコードが見つかって検索が成功するまで、またはサブテーブルが存在しない場合は検索が失敗するまで、上記のプロセスを繰り返します。

#比較回数

#計算式:

#配列表にキーワードが n 個ある場合:

検索が失敗した場合は、キーワードを少なくとも 1 回比較し、検索が成功した場合、キーワード比較の最大回数は b です。

注: a、b、n はすべて正の整数です。

アルゴリズムの複雑さ

二分探索の基本的な考え方は、n 個の要素をほぼ等しい 2 つの部分に分割し、a[n/2] を x と比較することです。 x=a[n/2] の場合、x が見つかり、アルゴリズムは終了します。x

時間計算量は while ループの数にすぎません。

合計 n 個の要素があり、

は n、n/2、n/4、....n/2^k と徐々に続きます (残りの要素数は次に操作されます) )、ここで、k はループの数です。

n/2^k>=1

を四捨五入すると、n/2^k=1

が得られます。 k=log2n、(基数 2、n の対数に基づく)

したがって、時間計算量は O(h)=O(log2n)

として表すことができます。以下は次のようになります。二等分 実装の疑似コードを検索します:

BinarySearch(max,min,des)

mid-while( minmid=(min max)/2

ifmid=des then

returnmid

elseifmid>des then

max=mid-1

else

min=mid 1

return max

ハーフ検索メソッドは、二分探索法 要素間の順序関係を最大限に利用し、分割統治法を採用しており、最悪の場合でも O(log n) で探索を完了することができます。その基本的な考え方は次のとおりです: (配列要素が昇順に配置されていると仮定して) n 個の要素をほぼ同じ数で 2 つの半分に分割し、a[n/2] を取得し、それを探したい x と比較します (x= の場合)。 a[n/ 2] の場合、x が見つかり、アルゴリズムは終了します。x

以上が二分探索アルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
如何使用C#编写二分查找算法如何使用C#编写二分查找算法Sep 19, 2023 pm 12:42 PM

如何使用C#编写二分查找算法二分查找算法是一种高效的查找算法,它在有序数组中查找特定元素的位置,时间复杂度为O(logN)。在C#中,我们可以通过以下几个步骤来编写二分查找算法。步骤一:准备数据首先,我们需要准备一个已经排好序的数组作为查找的目标数据。假设我们要在数组中查找特定元素的位置。int[]data={1,3,5,7,9,11,13

使用C语言编写的二分查找程序,使用pthread进行多线程处理使用C语言编写的二分查找程序,使用pthread进行多线程处理Aug 26, 2023 pm 12:45 PM

我们知道二分查找方法是一种最适合和有效的排序算法。这个算法适用于已排序的序列。算法很简单,它只是从中间找到元素,然后将列表分成两部分,并向左子列表或右子列表移动。我们知道它的算法。现在我们将看到如何在多线程环境中使用二分查找技术。线程的数量取决于系统中存在的核心数。让我们看一下代码以了解思路。示例#include<iostream>#defineMAX16#defineMAX_THREAD4usingnamespacestd;//placearr,keyandothervariabl

如何使用java实现二分查找算法如何使用java实现二分查找算法Sep 19, 2023 pm 12:57 PM

如何使用Java实现二分查找算法二分查找算法是一种高效的查找方法,适用于已排序的数组。它的基本思想是不断缩小查找范围,将查找值与数组中间的元素进行比较,并根据比较结果决定继续查找左半部分还是右半部分,直到找到目标元素或查找范围缩小为空。下面我们来具体介绍如何用Java实现二分查找算法。步骤一:实现二分查找方法publicclassBinarySearch

如何使用Python实现二分查找算法?如何使用Python实现二分查找算法?Sep 20, 2023 pm 01:24 PM

如何使用Python实现二分查找算法?二分查找算法,也称为折半查找算法,是一种高效的查找算法。它适用于有序的数组或列表,通过将目标值与数组中间位置的元素进行比较,从而缩小查找范围。下面将介绍如何在Python中实现二分查找算法,并提供具体的代码示例。算法思路:将目标值与数组中间位置的元素进行比较;如果相等,则返回元素位置;如果目标值大于中间位置的元素,则在右

如何使用二分查找算法在C语言中找到数组中的最小元素?如何使用二分查找算法在C语言中找到数组中的最小元素?Aug 25, 2023 pm 08:37 PM

C编程语言提供了两种搜索技术。它们如下所示:线性搜索二分搜索二分搜索这种方法只适用于有序列表。给定列表被分成两个相等的部分。给定的关键字与列表的中间元素进行比较。在这里,可能会发生三种情况,如下所示:如果中间元素与关键字匹配,则搜索将在此成功结束如果中间元素大于关键字,则搜索将在左侧分区进行。如果中间元素小于关键字,则搜索将在右侧分区进行。输入(i/p)-未排序的元素列表,关键字。输出(o/p)-成功-如果找到关键字失败-否则key=20mid=(low+high)/2程序1以下是使用二分查找在

使用二分查找算法找到一个数的立方根的Java程序使用二分查找算法找到一个数的立方根的Java程序Aug 28, 2023 pm 01:33 PM

立方根是一个整数值,当它自己连续乘以自己三次时,得到原始数值。在本文中,我们将编写一个使用二分搜索来找到一个数的立方根的Java程序。找到一个数的立方根是二分搜索算法的一个应用之一。在本文中,我们将详细讨论如何使用二分搜索来计算立方根。输入-输出示例Example-1:Input:64Output:4如,64的立方根为4,输出为4。Example-2:Input:216Output:6如,216的立方根为6,输出为6。二分查找二分搜索是一种用于查找元素(即排序数组中的键)的算法。二进制算法的工作

在C程序中,使用二分查找算法来搜索有理数,而不使用浮点数算术在C程序中,使用二分查找算法来搜索有理数,而不使用浮点数算术Aug 27, 2023 pm 06:05 PM

在这个问题中,我们得到了一个有理数的排序数组。我们必须使用二分搜索算法来搜索该有理数数组的给定元素,而不使用浮点运算。有理数是以p/q形式表示的数字,其中p和q都是整数。例如,⅔、⅕。二分搜索是一种搜索技术,通过查找数组的中间来查找元素。用于查找使用二分法搜索有理数排序数组中的元素,其中不允许浮点运算。我们将比较分子和分母,以找出哪个元素更大或哪个元素是要找到的元素。示例让我们为此创建一个程序,#include<stdio.h>structRational{&nbsp;&am

PHP算法解析:如何使用二分查找算法在有序数组中快速定位元素?PHP算法解析:如何使用二分查找算法在有序数组中快速定位元素?Sep 19, 2023 pm 01:14 PM

PHP算法解析:如何使用二分查找算法在有序数组中快速定位元素?概述:二分查找算法是一种高效的查找算法,它适用于有序数组中查找特定元素。本文将详细介绍二分查找算法的原理,并给出PHP代码示例。原理:二分查找算法通过反复将查找范围缩小一半,从而快速定位目标元素。其流程如下:首先,将查找范围缩小为数组的开头和结尾;然后,计算中间元素的索引,将其与目标元素进行比较;

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。