1.再帰:
自身の曲、自分の難しさ:悪いと思うが、良い読み取り法を見つける必要があります
2.二分法
ヘッドエンドは、左右常に変化し、真ん中を取る、間接的な中間の変更、クエリ効率が非常に高く、
1.再帰的(方法:)
#再帰的使用:ツリー構造をトラバース(データはツリー構造であり、トラバースを取り、トラバース中に得られた二つの結果、... 4つの結果が得られた) インポートOS filePathには = 「D:/タイトルなし」 IT = os.listdir(filePathに) #フォルダ内のファイルを表示、 #の印刷(IT)のリストの形で#印刷 印刷(「__iter__ 」 で DIR(IT)) #反復、反復可能かのリストは、Trueを返すかどうかを判断します 以下のための I で:IT 印刷(I) #ないリストの形で直接印刷、 インポートOS filePathに = " D:/無題" DEF読む(filePathに、N-): ITは os.listdir(filePathに)= #のLISTDIRビュー(開く)ファイルフォルダ #印刷( "__ iter__"ディレクトリ内(IT))#はイテラブル #の印刷(DIRで"__ next__"(IT))はイテレータではありません 以下のための I で:IT のiF:os.path.isdir(os.path.join(filePathに、I)) #の isdirはフォルダos.path.joinが固定かどうかを決定する文言(スプライシング) 印刷(" \ T "、* N- I) #の印刷フォルダ、 #の印刷(I) #この関数が再び呼び出される #読む(I) リード(os.path.join(filePathに、I)、N- + 1) #は+に(元のパスをパスを取得しますファイル)は、新たな経路を形成する層を追加し 、他: #を通常ファイル、いないのフォルダ を印刷(「\ tは」 *、I N-) #1 の終了再帰的、再帰的に一度、Nと判断された再帰回数 読む(filePathに、0)# の説明: #は、フォルダを開いて置くことです、別のフォルダの登場場合は、ファイルかどうかを判断して、ステッチ、新しいパスが表示されます #を使用すると、その後、内容を印刷、ファイルの出現までステッチを続け、その後、フォルダまたはファイルを開いた場合。
2.再帰(方法II :)
インポートOS filePathに = " D:/無題" DEF読む(filePathに、N-): #n型再帰深度 ITはos.listdir(filePathに)= #フォルダ内LISTDIRビュー(開く) #1 (DIRに"__ iter__"印刷( IT))#のイテラブル のための I における IT: #オープンレイヤ #1 のgetパス FPがos.path.join(filePathに、I)= #のスプライシングを した場合 os.path.isdir(FP): #は、フォルダかどうかを決定します 印刷(" \のT " * N-、I) 読む(FP、N- + +1) #はフォルダで、内部の再帰的な入り口の内容の読み取りを継続し 、他を: 印刷(「\ tの」 * N-、ⅰ) #再帰輸出 読む(filePathに、 1)
3.バイナリ検索
#方法:(一般的方法) LST = [11,22,33,44,55,66,77,88,99] #//床以外 のn-66 = 左 = 0 右 = LEN(LST) - 1つの。 #長さ--1インデックス= 。COUNT 1 = しばらくは左<= 右: 中央 =(左+右)// 2 IF N-> LST [ミドル]: 左 =ミドル+ 1。 ELIF N- < LST [ミドル]: 右 =ミドル--1 他: 印刷(COUNT) を印刷(" プレゼンス" ) 印刷(中) #中東中間インデックスがある BREAKの COUNT = COUNTの+ 1。 他: 印刷(" 存在しない" ) #方法2:(再帰的二分) LST = [11,22,33,44,55,66,77、 88,99 ] DEFの:(右、N-左)binary_search 中央 =(左+右)// 2 IF左> 右: 印刷(" なし" ) を返す -1 #が返されない-1 のIF N-> LST [中東]: 左 =中東+ 1。 elifの N- < LST [中]: 右 =中東- 1。 他: 返す中東 #をはい、入力のインデックス値を返す リターン binary_search(左、右、N-) #をN-表しあなたは価値判断の入力された指標値 印刷を(binary_search(0、LEN(LST )-1,65))