並べ替え は、データに適用される最も基本的で便利な関数の1つです。これは、特定の方法でデータを配置することを目的としています。データは、要件に応じて増減する可能性があります。 C ++ STLには、「sort()」という名前の組み込み関数があり、ソートアルゴリズムを簡単に実行できます。この記事では、C ++でのソート関数について説明します。
この記事では、次のポインタについて説明します。
ソート (( ) 関数
これはアルゴリズムヘッダーファイルの組み込み関数であり、配列、ベクトルなどのコンテナを指定された順序で並べ替えるために使用されます。内部的には、この機能はクイックソートとして実装されています
クイックソートは分割統治アルゴリズムです。クイックソートはまず、要素の大きなリストを2つの小さなサブリスト(下位要素と上位要素)に分割します。次に、クイックソートはサブリストを再帰的にソートします。
手順は次のとおりです。
1.リストからピボットと呼ばれるランダムな要素(通常は最後の要素)を選択します。
2.ピボットよりも小さい値を持つすべての要素がピボットの前に来るようにリストを並べ替え、ピボットよりも大きい値を持つすべての要素がその後に来るようにし、等しい値がどちらの方向にも進むことができるようにします。これはパーティション操作と呼ばれます。
3.小さい要素のサブリストと大きい要素のサブリストを再帰的に並べ替え、サブリストでピボットを再度選択して分割します。
再帰の基本ケースは、サイズが0または1のリストであり、並べ替える必要がないため、それらを組み合わせてリストを並べ替えます。
クイックソートは、実際には、挿入ソートやバブルソートなどの他のO(n log n)アルゴリズムよりも高速です。クイックソートは、インプレースパーティショニングアルゴリズムを使用して実装できます。つまり、ソート全体をO(log n)の追加スペースで実行できます。クイックソートは安定したソートではありません。
その複雑さは次のとおりです。
ベストケース– O(n log n)
最悪の場合– O(n ^ 2)
平均的なケース– O(n log n)
構文:
sort(first、last)
ここに、
first –ソートされる範囲の最初の要素のインデックス(ポインタ)です。
last –ソートされる範囲の最後の要素のインデックス(ポインタ)です。
たとえば、配列「arr」の要素を1から10の位置に並べ替える場合、sort(arr、arr + 10)を使用して、10個の要素を昇順で並べ替えます。
戻り値
無し
複雑
Javaでtostringメソッドを作成する方法
ソートの複雑さの平均はN * log2(N)です。ここで、N =最後–最初です。
データ範囲
[最初、最後)の範囲のオブジェクトが変更されます。
例外
ExecutionPolicyという名前のテンプレートパラメータによるオーバーロードは、次のようにエラーを報告します。
アルゴリズムがメモリの割り当てに失敗した場合、std :: bad_allocが例外としてスローされます。
アルゴリズムの一部として呼び出された関数を実行すると、例外std :: terminateがスローされます。
例–データを昇順で並べ替えるには:
#include using namespace std int main(){int array [] = {10、35、85、93、62、77、345、43、2、10} int n = sizeof(array)/ sizeof(array [0] )// 'sizeof'は、配列全体のサイズ、つまり各文字のサイズを示します*いいえ。文字の//そうしないでください。文字数// sizeof(array)を配列の任意の1文字のサイズで除算します//ここではarray [0] sort(array、array + n)coutです<< 'nArray after sorting using ' 'default sort is : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 }
出力:
説明
上記の例から、sort()関数はデフォルトで配列を昇順でソートしていることがわかります。
例–データを降順で並べ替えるには:
配列のデータを降順で並べ替えるには、要素を並べ替える順序を指定するために使用される3番目のパラメーターを導入する必要があります。 「greater()」関数を使用して、データを降順で並べ替えることができます。
#include using namespace std int main(){int array [] = {41、53、4、459、60、7、23、4、232、10} int n = sizeof(array)/ sizeof(array [0] )sort(array、array + n、greater())cout<< 'Array after sorting : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 }
出力:
Exp l 国家
ここで、sort()関数は、より大きな要素を前に置く方法で比較を行います。
C ++のソート関数に関するこの記事に進む
Partial_sort
C ++ STLは部分的な並べ替え関数を提供します。この関数はsort()関数に似ていますが、sort()関数とは異なり、範囲全体の並べ替えには使用されず、範囲の一部のみの並べ替えに使用されます。 [first、last)の範囲で要素を並べ替え、中央の要素の前の要素は昇順で並べ替えられ、中央の後の要素はそのままになります。
関数オブジェクトを使用して最初の位置を並べ替えると、最大の要素を見つけるために使用できます
cssでホバーを使用する方法
例
#include #include #include using namespace std int main(){vector vec = {10、45、60、78、23、21、30} vector :: iterator iptr partial_sort(vec.begin()、vec.begin() + 1、vec.end()、greater())iptr = vec.begin()cout<< 'The largest element is = ' << *iptr return 0 }
出力:
説明:
上記のコードを使用して、シリーズの最大数を見つけることができます。シリーズの最小数を見つけるには、大きい方のコマンドを削除する必要があります。
これで、「C ++でのソート関数」に関するこの記事は終わりです。詳細については、信頼できるオンライン学習会社であるEdurekaによるJavaトレーニングをご覧ください。エドゥレカの このコースは、HibernateやSpringなどのさまざまなJavaフレームワークとともに、コアJavaの概念と高度なJavaの概念の両方についてトレーニングするように設計されています。
質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。