選択ソートの使用方法

選択ソートの使用方法

選択ソートは、リストアイテムを選択し、その場所を別のアイテムと交換するソート手法です。最大のアイテムを選択し、リストの最も高いインデックスにあるアイテムと交換します。





アルゴリズムは、リストがソートされるまでこれを繰り返し行います。選択ソートがどのように機能するかよくわからない場合は、適切な場所に来ています。以下では、例を示しながら、さらに詳しく説明します。





選択ソート:詳細

リストがあるとします:[39、82、2、51、30、42、7]。選択ソートを使用してリストをソートするには、最初にリスト内の最大の番号を見つける必要があります。





指定されたリストでは、その番号は82です。82を最も高いインデックスの番号(つまり、7)と交換します。

最初のパスの後、新しいリストの順序は[39、7、2、51、30、42、82]になります。アルゴリズムがリスト全体を通過するたびに、それは「パス」と呼ばれます。



リストは、ソートプロセス中にソートされたサブリストとソートされていないサブリストを維持することに注意してください。

背景色cssを変更する方法

関連している: Big-O表記とは何ですか?





元のリストは、ゼロ項目のソートされたリストとすべての項目のソートされていないリストで始まります。次に、最初のパスの後に、番号82のみを持つソート済みリストがあります。

2番目のパスでは、ソートされていないサブリストの最大番号は51になります。この番号は42と交換され、以下の新しいリストの順序になります。





ラズベリーパイと関係があるクールなこと

[39、7、2、42、30、51、82]。

リスト全体がソートされるまで、このプロセスが繰り返されます。次の図は、プロセス全体をまとめたものです。

太字の黒の数字は、その時点で最も高いリスト値を示しています。緑のものは、ソートされたサブリストを示しています。

アルゴリズム分析

このアルゴリズムの複雑さ(Big-O表記を使用)を取得するには、以下の手順に従ってください。

最初のパスで、(n-1)の比較が行われます。 2回目のパスでは、(n-2)。 3番目のパスでは、(n-3)というように、(n-1)番目のパスまで続きます。これは1回の比較のみを行います。

以下のように比較を要約すると、次のようになります。

(n-1)+(n-1)+(n-1)+ ... + 1 =((n-1)n)/ 2。

したがって、選択ソートはO(n2)。

コードの実装

このコードは、PythonとJavaを使用して選択ソートを実行するために使用できる関数を示しています。

Python:

def selectionSort(mylist):
for x in range(len(mylist) - 1, 0, -1):
max_idx = 0
for posn in range(1, x + 1):
if mylist[posn] > mylist[max_idx]:
max_idx = posn
temp = mylist[x]
mylist[x] = mylist[max_idx]
mylist[max_idx] = temp

Java:

void selectionSort(int my_array[]){
for (int x = 0; x {
int index = x;
for (int y = x + 1; y if (my_array[y] index = y; // find lowest index
}
}
int temp = my_array[index]; // temp is a temporary storage
my_array[index] = my_array[x];
my_array[x] = temp;
}}

選択ソートからマージソートへの移行

上記のアルゴリズム分析が示しているように、選択ソートアルゴリズムはO(n2)。指数関数的に複雑であるため、非常に大きなデータセットには非効率的です。

アマゾン商品は配達されたが受け取られなかった

使用するはるかに優れたアルゴリズムは、O(nlogn)の複雑さを持つマージソートです。これで、選択ソートがどのように機能するかがわかりました。次に、ソートアルゴリズムのスタディリストで、マージソートを選択する必要があります。

共有 共有 つぶやき Eメール オーディオブックを無料でダウンロードするための8つの最高のウェブサイト

オーディオブックは素晴らしい娯楽の源であり、消化がはるかに簡単です。ここにあなたがそれらを無料でダウンロードすることができる8つの最高のウェブサイトがあります。

次を読む
関連トピック
  • プログラミング
  • プログラミング
  • アルゴリズム
著者について ジェローム・デビッドソン(22の記事が公開されました)

ジェロームはMakeUseOfのスタッフライターです。彼はプログラミングとLinuxに関する記事をカバーしています。彼は暗号愛好家でもあり、常に暗号業界を監視しています。

ジェローム・デビッドソンのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください