読者です 読者をやめる 読者になる 読者になる

Pythonでクイックソート

と、いうわけでPythonクイックソート

def quicksort(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0]
        #ピボットよりも小さい要素をすべて含んだ部分配列
        less = [i for i in array[1:] if i <= pivot]
        #ピボットよりも大きい要素をすべて含んだ部分配列
        greater = [i for i in array[1:] if i > pivot]
        #配列の要素が0になるまで繰り返す
        return quicksort(less) + [pivot] + quicksort(greater)

array = [2,4,3,5,6,1,8,9,0,11]
print(quicksort(array))

Javaを普段使っているので、[i for i in array[1:] if i > pivot]←これが見慣れないが、 Pythonだとこんな簡単に記述できるんだなぁ。 (リスト内包表記というらしい。)

参考

なっとく!アルゴリズム

なっとく!アルゴリズム