Pythonの高速ソートアルゴリズムと重み付けの高速ソートを実現する簡単な例

5456 ワード

@本文は公衆番号:csdn 2299に由来し、公衆番号プログラマー学府quick sortの高速ソートに注目できるのは基礎的なソートアルゴリズムであり、Pythonコードを使って書くのはかなり簡潔である.ここではPythonが高速ソートアルゴリズムと重い高速ソートを実現する簡単な例を見てみる.quick sortの高速ソートは基礎的なソートアルゴリズムである.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の核心の知识を学んで、深くコンピュータの基础知识を研究して、整理して、もしあなたも平凡ではありませんならば、それでは私と一绪にコードの外で、绝えず成长しましょう!実はここには技術があるだけでなく、技術以外のものもあります.例えば、どのように精緻なプログラマーになるか、「キックアス」ではなく、プログラマー自体が高貴な存在ではないでしょうか.[クリックして参加]あなた自身が高尚な人になりたいと思って、がんばって!