Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スターリンマージソート
Search
suzakutakumi
July 10, 2021
Programming
0
130
スターリンマージソート
Zliの大LTで発表したスライドです
suzakutakumi
July 10, 2021
Tweet
Share
More Decks by suzakutakumi
See All by suzakutakumi
ピクロス作成の中間発表
suzakutakumi
0
78
しゅみろん
suzakutakumi
0
97
trap-search
suzakutakumi
0
32
Pyramid Makerの作成
suzakutakumi
0
13
マークダウンパーサーの自作
suzakutakumi
0
86
絵文字ジェネレータボットの作成
suzakutakumi
0
120
send_discord
suzakutakumi
0
35
独自ドメインについて
suzakutakumi
0
25
ESP32とAlexaを用いたエアコン制御
suzakutakumi
0
1k
Other Decks in Programming
See All in Programming
WasmOS: Wasmを実行する自作Microkernel
riru
0
370
OpenAPI を守るのは難しい
ohmori_yusuke
1
140
TCAの Shared Stateって どういう仕組みになってんの?
yimajo
0
330
イベントストーミングによるオブジェクトモデリング・オブジェクト指向プログラミングの適用・開発プロセスの変遷・アーキテクチャの変革 / Object modeling with Event Storming.
nrslib
12
3.1k
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
130
Deno に Web 標準 API を実装する / Implementing Web Standard API to Deno
petamoriken
0
350
ISUCONってなんだか難しそう……!!でも、初めてのISUCONにPHPで挑戦してきました!
kotomin_m
1
300
オブジェクト指向は必要なのか / Is object-oriented needed?
kishida
27
19k
DocC Tutorial と TCA におけるテスト機能の紹介
kalupas226
1
330
上手な探索的テストとその上達方法について
matsu802
4
660
incrementalモデルの理解を深める
ikkimiyazaki
2
640
とにかくHTTP3をライトニングに話す / Anyway, I'll talk to Lightning about HTTP3.
seike460
PRO
0
120
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
The Invisible Customer
myddelton
114
12k
Being A Developer After 40
akosma
56
580k
In The Pink: A Labor of Love
frogandcode
137
21k
Pencils Down: Stop Designing & Start Developing
hursman
115
11k
Principles of Awesome APIs and How to Build Them.
keavy
119
16k
Music & Morning Musume
bryan
39
5.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
Building Your Own Lightsaber
phodgson
97
5.6k
Designing with Data
zakiwarfel
94
4.8k
Side Projects
sachag
451
41k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
178
11k
Transcript
スターリンマージソート 2021/07/10 Zli 大LT
自己紹介 HN:朱雀 匠(本名:鈴木 拓眞) Twitter: @suzakutakumi3
None
None
目的 スターリンソートから新しいソートアルゴリズムを考えました 実用性はない気がします また、世界のどこかに同じアルゴリズムがあると思うのでn番煎じです
スターリンソートとは ソートするのに邪魔な要素を粛清して、昇順・降順に並び替えるアルゴリズムです Pythonでの例: a=[1, 3, 2, -2,10,5,11] print(StalinSort(a)) 出力:[1, 3,
10, 11]
スターリンソートは実用的なアルゴリズムじゃない そこで、実用的なソートアルゴリズムにしよう!
スターリンマージソート スターリンマージソートは、スターリンソートとマージソートを元に考えました 最初にスターリンソートを繰り返し、並び替えられた配列を複数作ります その後、マージソートと同じ原理でマージしていきます 詳しくは次のページで
手順1:並び替えられた配列の生成 例:[0, 114, 13, 600, -282, 114] 1.スターリンソートをして、結果と除外された値の配列を作る 整列された配列:[0, 114,
600] 除外された配列:[13, -282, 114] 2.除外された配列で1と同様のことをする 整列された配列:[13, 114] 除外された配列:[-282] これで、整列された3つの配列が用意できました [ [0,114,600], [13, 114], [-282] ]
手順2:並び替えられた配列をマージする [ [0,114,600], [13, 114], [-282] ] 1.[0,114,600]と[13, 114]をマージします [
[0,13,114,114,600], [-282] ] 2.[0,13,114,114,600]と[-282]をマージします [-282,0,13,114,114,600]
計算量について 最悪計算量はO(n^2)です [n,n-1,n-2,・・・,3,2,1]の場合、最悪計算量になります 平均計算量はよくわかっていません マージ部分の処理数は、 分割された配列の数mとソートする配列の長さnとすると O(nlogm) になります
実際に時間を計測してみた [0,1,2,3,4,5,6,7,8,9]を10!通り並び替え実行し、実行し終えるまでの時間を測定しました マージソートが他のバブルソートなどよりも遅く、しっかりと計測できていなさそう
まとめ 平均処理数がわからないが、処理時間を見て遅いことが予想される アルゴリズムを考えてみて、先駆者たちの考えたアルゴリズムがすごかったこ とが再認識できた