Pythonの高速ソートアルゴリズムと重み付けの高速ソートを実現する簡単な例
5456 ワード
@本文は公衆番号:csdn 2299に由来し、公衆番号プログラマー学府quick sortの高速ソートに注目できるのは基礎的なソートアルゴリズムであり、Pythonコードを使って書くのはかなり簡潔である.ここではPythonが高速ソートアルゴリズムと重い高速ソートを実現する簡単な例を見てみる.quick sortの高速ソートは基礎的なソートアルゴリズムである.Pythonコードを使用すると、かなり簡潔に書かれています.ここでは、Pythonが高速ソートアルゴリズムを実現し、高速ソートを再実行する簡単な例を見てみましょう.
最初のステップ:基準数を選択して、この名詞に驚かないでください.ソートは比較サイズなので、比較サイズと見なすことができます.
例えば、最後の数3を基準数として、配列の数と3を順番に比較し、3より小さいものを左に、3より大きいものを右に、次のような結果になります.
第2歩:区間の個数を判断し、第1歩を経て左の区間は1つの数しかなく、数字がなくて比較したので、繰り返し操作する必要はありません.右の区間はあります.
最初のステップを繰り返し、基準数として5を選択し、比較結果を得ます.
これで左右の区間が1つしかありません.これはソートが完了したことを示しています.最後にすべての区間をマージするとソート結果が得られます.
C、C#、JAVAなどよりずっと簡単ではないでしょうか.
TIP:重さを減らす高速ソートは、集合を単一の要素に変更するだけです.ここではPython 3を使用して説明します.
出力:
直接使用する、集合(set)を並べ替え、重さを落とすこともできる.
あなたの大学を読む时に独学pythonを选んだことに感谢して、仕事をしてコンピュータの基础の悪い损を食べたことを発见して、学歴がだめなのは仕方がないことで、后日补うしかなくて、そこでコードの外で自分の逆襲の道を开いて、绝えずpythonの核心の知识を学んで、深くコンピュータの基础知识を研究して、整理して、もしあなたも平凡ではありませんならば、それでは私と一绪にコードの外で、绝えず成长しましょう!実はここには技術があるだけでなく、技術以外のものもあります.例えば、どのように精緻なプログラマーになるか、「キックアス」ではなく、プログラマー自体が高貴な存在ではないでしょうか.[クリックして参加]あなた自身が高尚な人になりたいと思って、がんばって!
6 2 4 5 3
最初のステップ:基準数を選択して、この名詞に驚かないでください.ソートは比較サイズなので、比較サイズと見なすことができます.
例えば、最後の数3を基準数として、配列の数と3を順番に比較し、3より小さいものを左に、3より大きいものを右に、次のような結果になります.
2 3 6 4 5
第2歩:区間の個数を判断し、第1歩を経て左の区間は1つの数しかなく、数字がなくて比較したので、繰り返し操作する必要はありません.右の区間はあります.
6 4 5
最初のステップを繰り返し、基準数として5を選択し、比較結果を得ます.
4 5 6
これで左右の区間が1つしかありません.これはソートが完了したことを示しています.最後にすべての区間をマージするとソート結果が得られます.
2 3 4 5 6
def quick_sort(array):
less = []; greater = []
if len(array) <= 1:
return array
pivot = array.pop()
for x in array:
if x <= pivot: less.append(x)
else: greater.append(x)
return quick_sort(less) + [pivot] + quick_sort(greater)
list = [2,4,2,6,7,8,1]
print quick_sort(list)
[1, 2, 2, 4, 6, 7, 8]
C、C#、JAVAなどよりずっと簡単ではないでしょうか.
TIP:重さを減らす高速ソートは、集合を単一の要素に変更するだけです.ここではPython 3を使用して説明します.
# -*- coding: utf-8 -*-
import random
L = [2, 3, 8, 4, 9, 5, 6, 5, 6, 10, 17, 11, 2]
def qsort(L):
if len(L)<2: return L
pivot_element = random.choice(L)
small = [i for i in L if i< pivot_element]
#medium = [i for i in L if i==pivot_element]
large = [i for i in L if i> pivot_element]
return qsort(small) + [pivot_element] + qsort(large)
print(qsort(L))
出力:
[2, 3, 4, 5, 6, 8, 9, 10, 11, 17]
直接使用する、集合(set)を並べ替え、重さを落とすこともできる.
mylist = list(set(L)) #
あなたの大学を読む时に独学pythonを选んだことに感谢して、仕事をしてコンピュータの基础の悪い损を食べたことを発见して、学歴がだめなのは仕方がないことで、后日补うしかなくて、そこでコードの外で自分の逆襲の道を开いて、绝えずpythonの核心の知识を学んで、深くコンピュータの基础知识を研究して、整理して、もしあなたも平凡ではありませんならば、それでは私と一绪にコードの外で、绝えず成长しましょう!実はここには技術があるだけでなく、技術以外のものもあります.例えば、どのように精緻なプログラマーになるか、「キックアス」ではなく、プログラマー自体が高貴な存在ではないでしょうか.[クリックして参加]あなた自身が高尚な人になりたいと思って、がんばって!