Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Perlで学ぼう!文系プログラマのための、知識ゼロからのデータ構造と計算量

 Perlで学ぼう!文系プログラマのための、知識ゼロからのデータ構造と計算量

Shinpei Maruyama

August 21, 2015
Tweet

More Decks by Shinpei Maruyama

Other Decks in Programming

Transcript

  1. SVを確保してSVの場所を代入 47  "7 47  )7  47 B

    47   47  SFG YGEEC  0x7f99d080db78
  2. 中身を表示 47  "7 47  )7  47 B

    47   47  SFG YGEEC 
  3. 中身の指し示すやつを取ってきて表示 47  "7 47  )7  47 B

    47   47  SFG YGEEC  0x7f99d080db78
  4. 添え字付きアクセス      10000 + short(2byte) *

    2 番地を読みに行くよ  10000番    
  5. ふたつめの要素作る )7  @WBMVF @OFYU@SFGVOEFG FM@ &MFNFOU SFG  )7

     @WBMVF @OFYU@SFG&MFNFOU SFG   FM@ &MFNFOU SFG  1 2
  6. 同様にみっつめの要素 )7  @WBMVF @OFYU@SFGVOEFG )7  @WBMVF @OFYU@SFG&MFNFOU SFG

      FM@ &MFNFOU SFG  )7  @WBMVF @OFYU@SFG&MFNFOU SFG   1 2 3
  7. 2を挿入 MJTU -JTU SFG )7  @WBMVF @OFYU@SFGVOEFG )7 

    @pSTU@FMFNFOU &MFNFOUSFG  )7  @WBMVF @OFYU@SFG &MFNFOUSFG 
  8. 3つめの値を取得したい MJTU -JTU SFG )7  @WBMVF @OFYU@SFG &MFNFOUSFG 

    )7  @pSTU@FMFNFOU &MFNFOUSFG  )7  @WBMVF @OFYU@SFG &MFNFOUSFG  )7  @WBMVF @OFYU@SFGVOEFG
  9. MJTU -JTU SFG )7  @WBMVF @OFYU@SFG &MFNFOUSFG  )7

     @pSTU@FMFNFOU &MFNFOUSFG  )7  @WBMVF @OFYU@SFG &MFNFOUSFG  )7  @WBMVF @OFYU@SFGVOEFG 3つめの値を取得したい
  10. MJTU -JTU SFG )7  @WBMVF @OFYU@SFG &MFNFOUSFG  )7

     @pSTU@FMFNFOU &MFNFOUSFG  )7  @WBMVF @OFYU@SFG &MFNFOUSFG  )7  @WBMVF @OFYU@SFGVOEFG 3つめの値を取得したい
  11. MJTU -JTU SFG )7  @WBMVF @OFYU@SFG &MFNFOUSFG  )7

     @pSTU@FMFNFOU &MFNFOUSFG  )7  @WBMVF @OFYU@SFG &MFNFOUSFG  )7  @WBMVF @OFYU@SFGVOEFG 3つめの値を取得したい
  12. 連結リストの計算量 • n個めの要素にアクセスしたい • 最初の要素へのアクセス + n - 1回辿 る必要がある

    = O(n) • リストの最初に値を挿入したい • 後ろにいくつ要素があっても、最初の要 素へのアクセス + 新しい要素を作って つなぐだけ = O(1)
  13. 2分木に2を追加 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFSVOEFG )7  @SPPU/PEF

    SFG  USFF 5SFFSFG  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG tree 
  14. 2分木に2を追加 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFSVOEFG )7  @SPPU/PEF

    SFG  USFF 5SFFSFG  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG tree 
  15. 2分木に2を追加 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFSVOEFG )7  @SPPU/PEF

    SFG  USFF 5SFFSFG  V  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG tree
  16. 2分木に6を追加 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFSVOEFG )7  @SPPU/PEF

    SFG  USFF 5SFFSFG  V  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG tree 
  17. 2分木に6を追加 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFSVOEFG )7  @SPPU/PEF

    SFG  USFF 5SFFSFG  V  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG tree 
  18. 2分木に6を追加 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFS/PEFSFG  )7 

    @SPPU/PEF SFG  USFF 5SFFSFG  V V  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG tree
  19. 2分木に3を追加 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFS/PEFSFG  )7 

    @SPPU/PEF SFG  USFF 5SFFSFG  V V  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG tree 
  20. 2分木に3を追加 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFS/PEFSFG  )7 

    @SPPU/PEF SFG  USFF 5SFFSFG )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG  V V   tree 
  21. 2分木に3を追加 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFS/PEFSFG  )7 

    @SPPU/PEF SFG  USFF 5SFFSFG )7  @WBMVF @TNBMMFSVOEFG @MBSHFS/PEFSFG  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG  V V   V  tree
  22. 2分木から1を探索 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFS/PEFSFG  )7 

    @SPPU/PEF SFG  USFF 5SFFSFG )7  @WBMVF @TNBMMFSVOEFG @MBSHFS/PEFSFG  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG  V V   V  tree
  23. 2分木から1を探索 )7  @WBMVF @TNBMMFS/PEFSFG  @MBSHFS/PEFSFG  )7 

    @SPPU/PEF SFG  USFF 5SFFSFG )7  @WBMVF @TNBMMFSVOEFG @MBSHFS/PEFSFG  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG  V V   V  tree
  24. 2分木から5を探索 )7  @WBMVF @TNBMMFSVOEFG @MBSHFS/PEFSFG  )7  @SPPU/PEF

    SFG  USFF 5SFFSFG )7  @WBMVF @TNBMMFSVOEFG @MBSHFS/PEFSFG   )7  @WBMVF @TNBMMFSVOEFG @MBSHFS/PEFSFG  )7  @WBMVF @TNBMMFSVOEFG @MBSHFSVOEFG   
  25.         B+木から5を探索 

      select * from table where id > 5