SlideShare a Scribd company logo
1 of 13
Download to read offline
ソーティングと貪欲法
ソーティング
●データを規則に従って並べ替えること
23 51 35 92 62 81 36 53 68 31
23 31 35 36 51 53 62 68 81 92
ソーティング
●様々なアルゴリズムがある
●バブルソート
●選択ソート
●挿入ソート
●マージソート
●クイックソート
などなど…
バブルソート
●隣の要素と比較して、大小関係が正しくなかっ
たら入れ替える、ということをくりかえす
●計算量
●平均
●最悪
O(n2
)
O(n2
)
選択ソート
●まだソートしていない部分から最小値を取って
きてソートした部分に追加する、ということを
くりかえす
●計算量
●平均
●最悪
O(n2
)
O(n2
)
挿入ソート
●まだソートしていない部分の先頭の値をソート
済みの部分の適切な場所に挿入する、というこ
とをくりかえす
●計算量
●平均
●最悪
● が小さい時は非常に高速なのでよく使われる
O(n2
)
O(n2
)
n
マージソート
●配列を前後2分割して、それぞれを再帰的に
マージソートしたあと、2つのソート済み配列
をマージする
●計算量
●平均
●最悪
O(nlog(n))
O(nlog(n))
クイックソート
●適当な要素を基準値として、それより小さいも
のを配列の前の方に、大きいものを後ろの方に
動かし、前の方、後ろの方で再帰的にクイック
ソートする
●計算量
●平均
●最悪
●平均的にはマージソートより定数倍速い
O(n2
)
O(nlog(n))
ボゴソート
●ネタソートアルゴリズム
●ソートができるまで配列をシャッフルし続ける
●計算量
●平均
●最悪
●   ぐらいまでしか間に合わない
O(n×n!)
O(∞)
n=10
競技プログラミングでのソート
●大抵の言語には標準ライブラリにソートがある
●C++: std::sort, C: qsort
●使い方はググってください
●実際速い
●ソートアルゴリズムについての知識が役に立つ
問題が出ることがある
●ソートアルゴリズムを知っておいて損はない
貪欲法
●その時々で最善と思われる選択肢を選ぶ方法
●「有利さ」で降順にソートして先頭から選ぶ
●適用できる問題とできない問題がある
●ナップサック問題は貪欲法ではうまく行かない
貪欲法
● 円を1円玉、5円玉、…、500円玉でぴったり
払うとき、必要な硬貨の最小枚数は何枚?
●大きい硬貨から順に使えるだけ使っていく
●100円玉を5枚使うより500円玉を使った方がいい
n
例) 977 = 500×1 + 100×4 + 50×1
+ 10×2 + 5×1 + 1×2
11枚
貪欲法がうまく行かない例
● 円を 円玉、 円玉、…、 円玉でぴったり
払うとき、必要な硬貨の最小枚数は何枚?
●大きい硬貨から払って行くとうまく行かない
●動的計画法で解く
n a1 a2 am
例) n=15,a1=10,a2=7,a3=1
15 = 10×1 + 1×5 6枚
15 = 7×2 + 1×1 3枚

More Related Content

More from 京大 マイコンクラブ

More from 京大 マイコンクラブ (20)

Geometry with Unity
Geometry with UnityGeometry with Unity
Geometry with Unity
 
セミコロンレスc++
セミコロンレスc++セミコロンレスc++
セミコロンレスc++
 
エンジニアと健康
エンジニアと健康エンジニアと健康
エンジニアと健康
 
女の子になれなかった人のために
女の子になれなかった人のために女の子になれなかった人のために
女の子になれなかった人のために
 
Pietで競プロしよう
Pietで競プロしようPietで競プロしよう
Pietで競プロしよう
 
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったらもし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
 
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
 
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
 
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
 
Altseed
AltseedAltseed
Altseed
 
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
 
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
 
C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回
 
C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回
 
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
 
文字コード基礎論A
文字コード基礎論A文字コード基礎論A
文字コード基礎論A
 

Recently uploaded

Recently uploaded (12)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

ソーティングと貪欲法