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
Quick Sort
Search
KuoE0
March 15, 2013
Programming
11k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Quick Sort
KuoE0
March 15, 2013
More Decks by KuoE0
See All by KuoE0
Protocol handler in Gecko
kuoe0
0
110
面試面試面試,因為很重要所以要說三次!
kuoe0
2
320
應徵軟體工程師
kuoe0
0
190
面試心得分享
kuoe0
0
440
Windows 真的不好用...
kuoe0
0
330
Python @Wheel Lab
kuoe0
0
250
Introduction to VP8
kuoe0
0
300
Python @NCKU_CSIE
kuoe0
0
140
[ACM-ICPC] Tree Isomorphism
kuoe0
1
280
Other Decks in Programming
See All in Programming
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
850
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
360
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1k
GitHubCopilotCLIのスラッシュコマンドを自作してみる
htkym
0
100
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
280
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3k
AIエージェントで 変わるAndroid開発環境
takahirom
2
710
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
160
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
900
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
170
Android CLI
fornewid
0
140
Featured
See All Featured
From π to Pie charts
rasagy
0
240
Making the Leap to Tech Lead
cromwellryan
135
10k
Building Applications with DynamoDB
mza
96
7.1k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
280
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
GitHub's CSS Performance
jonrohan
1033
470k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Test your architecture with Archunit
thirion
1
2.3k
Technical Leadership for Architectural Decision Making
baasie
3
440
Statistics for Hackers
jakevdp
799
230k
The SEO identity crisis: Don't let AI make you average
varn
0
520
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
370
Transcript
Quick Sort ֲࢸݢʢKuoE0ʣ
[email protected]
KuoE0.ch
Latest update: Mar 15, 2013 Attribution-ShareAlike 3.0 Unported (CC BY-SA
3.0) http://creativecommons.org/licenses/by-sa/3.0/
Algorithm ࠾༻ divide & conquer ࡦུ
Divide ኺᏐྻதग़Ұݸݩૉ࡞ҝ pivotɼར ༻ pivot ሡݪᏐྻҝၷݸࢠᏐྻɿ • ॴ༗ݩૉখԙ pivot తᏐྻ
A • ॴ༗ݩૉେԙ pivot తݩૉతᏐྻ B • ԙ pivot తݩૉՄ์ஔࡏҰݸத
2 9 4 3 8 7 5 1 6
2 9 4 3 8 7 5 1 6 2
7 4 3 5 1 6 9 8
9 8 2 4 3 5 1 6 2 9
4 3 8 7 5 1 6 2 7 4 3 5 1 6 9 8
9 8 2 4 3 5 1 6 2 4
5 1 6 2 9 4 3 8 7 5 1 6 2 7 4 3 5 1 6 9 8 3
4 5 6 2 1 9 8 2 4 3
5 1 6 2 4 5 1 6 2 9 4 3 8 7 5 1 6 2 7 4 3 5 1 6 9 8 3
4 5 6 2 1 2 9 8 2 4
3 5 1 6 2 4 5 1 6 2 9 4 3 8 7 5 1 6 2 7 4 3 5 1 6 9 8 3 1
4 5 6 2 1 2 9 8 2 4
3 5 1 6 2 4 5 1 6 2 9 4 3 8 7 5 1 6 2 2 7 4 3 5 1 6 9 8 3 1
4 5 6 5 6 2 1 2 9 8
2 4 3 5 1 6 2 4 5 1 6 2 9 4 3 8 7 5 1 6 2 2 7 4 3 5 1 6 9 8 3 1 4
5 6 4 5 6 5 6 2 1 2
9 8 2 4 3 5 1 6 2 4 5 1 6 2 9 4 3 8 7 5 1 6 2 2 7 4 3 5 1 6 9 8 3 1 4
5 6 5 4 5 6 5 6 2 1
2 9 8 2 4 3 5 1 6 2 4 5 1 6 2 9 4 3 8 7 5 1 6 2 2 7 4 3 5 1 6 9 8 3 1 4 6
5 6 5 4 5 6 5 6 2 1
2 9 8 2 4 3 5 1 6 2 4 5 1 6 2 9 4 3 8 7 5 1 6 2 5 2 7 4 3 5 1 6 9 8 3 1 4 6
5 6 5 4 5 6 5 6 2 1
2 9 8 9 2 4 3 5 1 6 2 4 5 1 6 2 9 4 3 8 7 5 1 6 2 5 2 7 4 3 5 1 6 9 8 3 1 4 6 8
5 6 5 4 5 6 5 6 2 1
2 9 8 9 2 4 3 5 1 6 2 4 5 1 6 2 9 4 3 8 7 5 1 6 9 2 5 2 7 4 3 5 1 6 9 8 3 1 4 6 8
Conquer ༝ԙࢠᏐྻቮඃ pivot ҝၷஈɼҰஈ খԙԙ pivot తᏐྻ Aɼ㠥Ұஈେԙ ԙ pivot
తᏐྻ Bɻ
Conquer ༝ԙࢠᏐྻቮඃ pivot ҝၷஈɼҰஈ খԙԙ pivot తᏐྻ Aɼ㠥Ұஈେԙ ԙ pivot
తᏐྻ Bɻ A B C
2 2
2 2 1
2 2 1
1 2 1 2 2 5 2 5 1 6
1 2 1 2 2 5 2 5 1 6
5 6 1 2 1 2 5 6 2 5
2 5 1 6 4
5 6 1 2 1 2 5 6 2 5
2 5 1 6 4
4 5 6 5 6 1 2 1 2 4
5 6 5 6 2 5 2 5 1 6 4 3
4 5 6 5 6 1 2 1 2 4
5 6 5 6 2 5 2 5 1 6 4 3
1 2 3 4 5 6 4 5 6 5
6 1 2 1 2 4 5 6 5 6 1 2 3 4 5 6 9 2 5 2 5 9 1 6 4 3 8
1 2 3 4 5 6 4 5 6 5
6 1 2 1 2 4 5 6 5 6 1 2 3 4 5 6 9 2 5 2 5 9 1 6 4 3 8
8 9 1 2 3 4 5 6 8 9
4 5 6 5 6 1 2 1 2 4 5 6 5 6 1 2 3 4 5 6 9 2 5 2 5 9 7 1 6 4 3 8
8 9 1 2 3 4 5 6 8 9
4 5 6 5 6 1 2 1 2 4 5 6 5 6 1 2 3 4 5 6 9 2 5 2 5 9 7 1 6 4 3 8
8 9 1 2 3 4 5 6 8 9
4 5 6 5 6 1 2 1 2 4 5 6 5 6 1 2 3 4 5 6 1 2 3 4 5 6 7 8 9 9 2 5 2 5 9 7 1 6 4 3 8
9 3 How to Divide 4 1 5 8 6
7 2
9 3 How to Divide 4 1 5 8 6
4 7 2
9 3 How to Divide 4 1 5 8 6
4 7 2
9 3 How to Divide 4 1 5 8 6
4 7 2
9 3 How to Divide 4 1 5 8 6
4 7 2
9 3 How to Divide 4 1 5 8 6
4 7 2
9 3 How to Divide 4 1 5 8 6
4 7 2
9 3 How to Divide 4 1 5 8 6
4 7 2
9 3 How to Divide 4 1 5 8 6
4 7 2
9 3 How to Divide 4 1 5 8 6
4 7 2
9 3 How to Divide 4 1 5 8 6
4 7 2 4 1 3 2 5 8 7 9 6
5 6 7 8 9 3 2 1 4 How
to Conquer
5 6 7 8 9 3 2 1 4 How
to Conquer
5 6 7 8 9 3 2 1 4 How
to Conquer
5 6 7 8 9 3 2 1 4 How
to Conquer
void quickSort( int L, int R ) { if (
R - L <= 1 ) return; int pivot = N[ R - 1 ], p = L; for ( int i = L; i < R - 1; ++i ) { if ( N[ i ] <= pivot ) { swap( N[ i ], N[ p ] ); ++p; } } swap( N[ R - 1 ], N[ p ] ); quickSort( L, p ); quickSort( p + 1, R ); } In-place Version
9 4 3 6 5 1 8 7 How to
Divide 2
9 4 3 6 5 1 8 7 How to
Divide 2 6
9 4 3 6 5 1 8 7 How to
Divide 2 2 6
9 4 3 6 5 1 8 7 How to
Divide 2 2 6
9 4 3 6 5 1 8 7 How to
Divide 2 2 2 6
9 9 4 3 6 5 1 8 7 How
to Divide 2 2 2 6
9 9 4 4 3 6 5 1 8 7
How to Divide 2 2 2 9 6
9 9 4 4 3 6 5 1 8 7
How to Divide 2 2 2 9 6
9 9 4 4 3 6 5 1 8 7
How to Divide 2 2 2 9 4 6
9 9 4 4 3 3 6 5 1 8
7 How to Divide 2 2 2 9 4 6
9 9 4 4 3 3 6 5 1 8
7 How to Divide 2 2 2 9 4 6
9 9 4 4 3 3 6 5 1 8
7 How to Divide 2 2 2 9 4 3 6
9 9 4 4 3 3 6 5 1 8
7 8 How to Divide 2 2 2 9 4 3 6
9 9 4 4 3 3 6 5 1 8
7 8 8 How to Divide 2 2 2 9 4 3 6
9 9 4 4 3 3 6 5 1 8
7 8 7 8 How to Divide 2 2 2 9 4 3 6
9 9 4 4 3 3 6 5 1 8
7 8 7 8 7 How to Divide 2 2 2 9 4 3 6
9 9 4 4 3 3 6 5 1 5
8 7 8 7 8 7 How to Divide 2 2 2 9 4 3 6
9 9 4 4 3 3 6 5 1 5
8 7 8 7 8 7 How to Divide 2 2 2 9 4 3 6
9 9 4 4 3 3 6 5 1 5
8 7 8 7 8 7 How to Divide 2 2 2 5 9 4 3 6
9 9 4 4 3 3 6 5 1 5
8 7 8 7 8 7 How to Divide 2 2 2 5 9 4 3 1 6
9 9 4 4 3 3 6 5 1 5
8 7 8 7 8 7 How to Divide 2 2 2 5 9 4 3 1 6
9 9 4 4 3 3 6 5 1 5
8 7 8 7 8 7 How to Divide 2 2 2 5 9 4 3 1 1 6
9 9 4 4 3 3 6 5 1 5
8 7 8 7 8 7 How to Divide 2 2 2 5 9 4 3 1 1 6
9 9 4 4 3 3 6 5 1 5
8 7 8 7 8 7 How to Divide 2 2 2 5 9 4 3 1 1 6 2 5 4 3 1 8 9 7
6 How to Conquer 1 4 2 3 5 8
7 9 1 4 2 3 5 8 7 9
6 How to Conquer 1 4 2 3 5 8
7 9 1 4 2 3 5 8 7 9
End