Pythonに

こんばんは、ダンです。

Pythonのrandomクラスに面白いメソッドがあったからちょっとやってみた。

その名も!

random.shuffle()!!!

これは

random.shuffle([1,2,3])
と、実行すると

1,2,3の順番が並び変わると言うメソッドらしいです。

あれだよね。

こういうの見たらボゴソート作りたくなるよね。

ってわけで作ってみた。




import random

def bogo(s):
while 1:
num = s[0]
f = True
for x in s:
if num <= x:
num = x
else:
f = False
break
if f:
return s
random.shuffle(s)

print bogo([1,2,3,4,5,6,7,8,9,10])


やばいよ!このソート!
このリストをソートするにはO(n)だよ!!

このリストをクイックソートでやったらO(n^2)かかるからね・・!

---追記---

ボゴソートだけじゃつまらないからクイックソートも作ってみた!



def quick(s):
if len(s) <= 1:
return s
mid = s[0]
left = []
right = []
for x in s[1:]:
if x <= mid:
left.append(x)
else:
right.append(x)
left = quick(left)
right = quick(right)

return left+[mid]+right

print quick([2,5,1,6,1,3,72,3,6])


うん、こんな感じかなっ

QuickSortはアルゴリズムは知ってたけど、実際に書いてみるのは初めて。

再帰関数ってオーダー求めにくいけど・・・

O(nlog(n))です!だって有名だもん!

次はマージソートかこうっかなー。

プロフィール

ダンギルバ

Author:ダンギルバ
ダンです!

~連絡先~
メール:

ついったーID:dangiruba

気軽にコメントとかください(*・ω・*)
大歓迎です(*・ω・*)

4のつく日は英語で更新!かも!!
暖かく見守ってください//
間違いあったらコメントくれると助かります><

ごゆっくりご覧ください。

カレンダー
プルダウン 降順 昇順 年別

06月 | 2011年07月 | 08月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -


最新コメント
最新記事
月別アーカイブ
カテゴリ
FC2カウンター
ランキング
ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村のランキング参加してます(´・ω・)ノ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード