Binäre Suche in Python / C ++

You can use bisect module to perform binary search in Python. But unfortunately, unlike Ruby's bsearch, you cannot pass lambda (or key) to the function.

However, you can pass a fantastic class to make a special comparison.

This example will compute math.ceil(math.sqrt(1000)). You can modify f() to any custom stuff.

#!/usr/bin/python

class KeyRange(object):
    def __init__(self, lo, hi, key):
        self.lo = lo
        self.hi = hi
        self.key = key
    def __len__(self):
        return self.hi-self.lo
    def __getitem__(self, k):
        return self.key(k)

def f(n):
    return n**2>=1000
import bisect
print(bisect.bisect_left(KeyRange(0,1000,f),1))

PS

Well, this looks like what Guido loves, indeed...

Acknowledgements

C++

Recentry I updated cpp_range (https://qiita.com/cielavenir/items/94c9abbb7767bd57607b) to enable KeyRange. You can find some fun on it, although using partition_point looks better.

Usage is like this:

#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;

int main(){
	auto kr=makeKeyRange(0,1000,[&](inti)->constint{returni*i>=1000;});
	auto it=lower_bound(kr.begin(),kr.end(),1);
	printf("%d\n",distance(kr.begin(),it));
}

Recommended Posts

Binäre Suche in Python / C ++
Dichotomie mit Python
Binäre Suche in Python
Algorithmus in Python (ABC 146 C Dichotomie
Algorithmus in Python (Dichotomie)
Schreiben Sie eine Dichotomie in Python
Memo zur Bisektionssuche (python2.7)
[Python] Bisection-Suche ABC155D
Lineare Suche in Python
Dichotomie mit Python
Dichotomie mit Python 3
C-API in Python 3
Erweitern Sie Python in C ++ (Boost.NumPy)
C-Sprache ALDS1_4_B Binäre Suche
Algorithmus in Python (Breitenprioritätssuche, bfs)
Speichern Sie die Binärdatei in Python
ABC166 in Python A ~ C Problem
Erstellen Sie eine Binärdatei in Python
Algorithmus in Python (Tiefenprioritätssuche, dfs)
Löse ABC036 A ~ C mit Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
So verpacken Sie C in Python
[C-Sprachalgorithmus] binärer Suchbaum
Löse ABC037 A ~ C mit Python
Schreiben Sie einen C-Sprach-Unit-Test in Python
Suche nach Tiefenpriorität mit Stack in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Löse ABC175 A, B, C mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Implementieren Sie den FIR-Filter in Python und C.
Suchen und spielen Sie YouTube-Videos mit Python
Epoche in Python
Deutsch in Python
DCI in Python
Visualisieren Sie die binäre Suche
Quicksort in Python
nCr in Python
Schreiben Sie die O_SYNC-Datei in C und Python
N-Gramm in Python
Programmieren mit Python
Python C ++ Notizen
Plink in Python
Konstante in Python
ABC146C (Dichotomie)
Python, openFrameworks (c ++)
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python