[python] [c ++] bisect (* _bound) dans la liste inversée (décroissante)

bisect ne prend pas en charge la liste décroissante, alors je l'ai fait. https://codeday.me/jp/qa/20190215/252510.html Il y en a, mais je me demande s'il est possible de le mettre en œuvre moi-même.

from bisect import*

cargo=[1,4,6,43,7,3,6,3,7,32]
length=len(cargo)
cargo_ascending =[1,3,3,4,6,6,7,7,32,43]
cargo_descending=[43,32,7,7,6,6,4,3,3,1]

#cargo_Je n'ai pas besoin de le prendre comme un argument descendant, mais pour le moment
def bisect_reverse_right(cargo_descending,x,lb=0,ub=length):  
    return length-bisect_left(cargo_ascending,x,length-ub,length-lb)

def bisect_reverse_left(cargo_descending,x,lb=0,ub=length):
    return length-bisect_right(cargo_ascending,x,length-ub,length-lb)

print(bisect_left(cargo_ascending,7))  #6
print(bisect_right(cargo_ascending,7))  #8
print(bisect_left(cargo_ascending,43))  #9
print(bisect_right(cargo_ascending,43))  #10

print(bisect_reverse_left(cargo_descending,7))  #2
print(bisect_reverse_right(cargo_descending,7))  #4
print(bisect_reverse_left(cargo_descending,43))  #0
print(bisect_reverse_right(cargo_descending,43))  #1
int bisect_reverse_left(vector<int>cargo_descending,int x,int lb=0,int ub=length){
    return length-(upper_bound(cargo_ascending.begin()+length-ub,cargo_ascending.begin()+length-lb,x)-cargo_ascending.begin());
}
int bisect_reverse_right(vector<int>cargo_descending,int x,int lb=0,int ub=length){
    return length-(lower_bound(cargo_ascending.begin()+length-ub,cargo_ascending.begin()+length-lb,x)-cargo_ascending.begin());
}

Depuis que j'ai reçu un commentaire, je vais vous donner une version en utilisant la fonction de comparaison

#include <algorithm>
#include <iostream>
#include <vector>

int length;

//C'est du fret_Seulement descendant requis
int bisect_reverse_left(std::vector<int>cargo_descending,int x,int lb=0,int ub=length){
    return *std::upper_bound(cargo_descending.begin()+lb,cargo_descending.begin()+ub, x, [](autoa,autob){returna>b;});
}
int bisect_reverse_right(std::vector<int>cargo_descending,int x,int lb=0,int ub=length){
    return *std::lower_bound(cargo_descending.begin()+lb,cargo_descending.begin()+ub, x, [](autoa,autob){returna>b;});
}



int main() {
    std::vector<int> v = {5, 4, 3, 2, 2, 1};
    length=v.size();
    std::cout<<bisect_reverse_left(v,3)<<std::endl;  //2
    std::cout<<bisect_reverse_right(v,3)<<std::endl;  //3
}

Recommended Posts

[python] [c ++] bisect (* _bound) dans la liste inversée (décroissante)
Liste triée en Python
Next Python en langage C
La chose semblable à une recherche de liste en Python
API C en Python 3
Inverser les chaînes en Python
Étendre python en C ++ (Boost.NumPy)
Recherche binaire en Python / C ++
Tri décroissant avec mongodb en python
Obtenir des éléments de liste en Python
Extraire plusieurs doublons de liste en Python
Différence entre list () et [] en Python
[python] Gérer les fonctions dans une liste
Résoudre ABC036 A ~ C avec Python
Comment envelopper C en Python
Résoudre ABC037 A ~ C avec Python
Supprimer plusieurs éléments dans la liste python
Ecrire un test unitaire de langage C en Python
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
Liste de liens (list_head / queue) en langage C
Afficher une liste d'alphabets en Python 3
Algorithme en Python (ABC 146 C Dichotomy
Implémenter le filtre FIR en langage Python et C
Prenez la somme logique de List en Python (fonction zip)
Différence entre append et + = dans la liste Python
Ecrire le fichier O_SYNC en C et Python
Télécharger des images à partir de la liste d'URL en Python
Résumé des méthodes intégrées, etc. de la liste Python
Obtenir la liste de codes EDINET en Python
Exécutez Python en C ++ sur Visual Studio 2017
[Python] Comprendre le fonctionnement des tranches de liste en quelques secondes
Traitement asynchrone en Python: référence inverse asyncio
Comment utiliser la bibliothèque C en Python
Utilisez Python pour une sortie formatée telle que C / C ++ printf
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Comment effacer un taple dans une liste (Python)
Comment générer une séquence en Python et C ++
Copiez la liste en Python
Tutoriel Boost.NumPy pour l'extension de Python en C ++ (pratique)
Afficher les avis sur les médicaments à l'aide de listes en Python
J'ai essayé d'ajouter un module Python 3 en C
Sélectionnez au hasard des éléments dans la liste (tableau) en python
[Python] Manipulation d'éléments dans une liste (tableau) [Trier]
Premier apprentissage profond en C # -Imitation de l'implémentation en Python-
Aplatir une liste standard bidimensionnelle irrégulière en Python
Comment supprimer les éléments en double dans la liste Python 3
Trier la liste des tuples en Python en spécifiant l'ordre croissant / décroissant de plusieurs clés
Quadtree en Python --2
Python en optimisation
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
nCr en python
N-Gram en Python
Programmation avec Python