Skip to content

Instantly share code, notes, and snippets.

@shoya140
Created December 4, 2013 10:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save shoya140/7785552 to your computer and use it in GitHub Desktop.
Save shoya140/7785552 to your computer and use it in GitHub Desktop.
def quicksort(list):
if len(list) <= 1:
return list
pivot = list[0]
left = []
right = []
for val in list[1:len(list)]:
if val < pivot:
left.append(val)
else:
right.append(val)
left = quicksort(left)
right = quicksort(right)
return left + [pivot] + right
if __name__ == "__main__":
list = [3, 4, 7, 1, 8, 2, 9, 5]
print quicksort(list)
@k4zy
Copy link

k4zy commented Dec 6, 2013

僕も触発されて,quicksortをpythonで書いてみました!!
実装の元ネタは昔読んだすごいH本(Haskell)です
もしかしたら間違ってるかもしれないです 笑
https://gist.github.com/kazy1991/7820879

@shoya140
Copy link
Author

shoya140 commented Dec 8, 2013

おお!kazyのコードのほうが綺麗で可読性高い!
忘れがちなのでリスト内包表記もっと使っていきたいです :)

@shoya140
Copy link
Author

shoya140 commented Dec 8, 2013

あとleft[], right[] や min_list[], max_list[]みたいに新しく配列作るのって内部ソート的にOKなのか疑問.
決められた領域内で入れ替えによって実装すべきじゃないかと思った.

@k4zy
Copy link

k4zy commented Dec 10, 2013

確かに内部ソートとは言えない気がしますね..
僕のクイックソートの書き方は関数型言語の定番なみたいなやつで,
ネットで定番の炎上案件みたいになってますね
http://togetter.com/li/445854

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment