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
5
10k
Quick Sort
KuoE0
March 15, 2013
Tweet
Share
More Decks by KuoE0
See All by KuoE0
Protocol handler in Gecko
kuoe0
0
100
面試面試面試,因為很重要所以要說三次!
kuoe0
2
270
應徵軟體工程師
kuoe0
0
180
面試心得分享
kuoe0
0
430
Windows 真的不好用...
kuoe0
0
310
Python @Wheel Lab
kuoe0
0
230
Introduction to VP8
kuoe0
0
270
Python @NCKU_CSIE
kuoe0
0
130
[ACM-ICPC] Tree Isomorphism
kuoe0
1
260
Other Decks in Programming
See All in Programming
CSC307 Lecture 06
javiergs
PRO
0
680
MUSUBIXとは
nahisaho
0
130
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
230
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
270
高速開発のためのコード整理術
sutetotanuki
1
390
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
120
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
680
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
200
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
160
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
Featured
See All Featured
For a Future-Friendly Web
brad_frost
182
10k
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
290
Skip the Path - Find Your Career Trail
mkilby
0
54
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
120
The browser strikes back
jonoalderson
0
360
The Mindset for Success: Future Career Progression
greggifford
PRO
0
230
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
210
Docker and Python
trallard
47
3.7k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
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