ホームページ  >  記事  >  バックエンド開発  >  Pythonクイックソート、挿入ソートアルゴリズム、カスタムソート例の詳細説明

Pythonクイックソート、挿入ソートアルゴリズム、カスタムソート例の詳細説明

伊谢尔伦
伊谢尔伦オリジナル
2017-06-28 13:54:531776ブラウズ

この記事では主にPythonのクイックソートと挿入ソートアルゴリズムの実装とカスタムソートの例を紹介します。必要な友達はそれを参照してください

1. クイックソート。 バブルソート

の改良です。 1962 年に C. A. R. ホアによって提案されました。その基本的な考え方は、1 回の並べ替えで並べ替えるデータを 2 つの独立した部分に分割し、一方の部分のすべてのデータがもう一方の部分のすべてのデータよりも小さくなり、この方法を使用してデータの 2 つの部分をすばやく分離することです。並べ替えでは、並べ替えプロセス全体を

再帰的に実行できるため、データ全体が順序付けされたシーケンスになります。 迅速なソート、再帰的実装

def quick_sort(num_list):
  """
  快速排序
  """
  if num_list == []:
    return num_list
  smallList = []
  bigList = []
  middleElement = num_list[0]
  for i in num_list[1:]:
    if i <= middleElement:
      smallList.append(i)
    else:
      bigList.append(i)
  return quick_sort(smallList)+[middleElement]+quick_sort(bigList)

2. 挿入ソート

挿入ソートのアルゴリズムの説明は、シンプルで直感的なソート アルゴリズムです。ソートされていないデータの場合は、ソートされたシーケンスを後ろから前にスキャンし、対応する位置を見つけて挿入します。挿入ソートの実装では、通常、インプレース ソートが使用されます (つまり、O(1) 個の余分なスペースのみを使用するソート)。したがって、後ろから前へのスキャン プロセス中に、ソートされた要素を繰り返して徐々に行う必要があります。後方にシフトされ、最新の要素の挿入スペースが提供されます。

挿入sort

def insert_sort(num_list):
  """
  插入排序
  """
  for i in range(len(num_list)-1):
    for j in range(i+1, len(num_list)):
      if num_list[i]>num_list[j]:
        num_list[i],num_list[j] = num_list[j],num_list[i]
  return num_list

3. カスタムソート

sort()またはsorted()のキーを使用して実現します。
例は次のとおりです:

def sort_key(obj):
  sorted_list = [4, 2, 5, 9, 7, 8, 1, 3, 6, 0]
  return sorted_list.index(obj)
 
 
if name == &#39;main&#39;:
  print sorted(range(10), key=sort_key)
 
# 输出结果如下
[4, 2, 5, 9, 7, 8, 1, 3, 6, 0]

# リスト内のキーワードの

index

位置を使用してカスタム並べ替えを実行します

以上がPythonクイックソート、挿入ソートアルゴリズム、カスタムソート例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。