この記事では、Java Exchange Sortingにおけるカクテルソートの実装方法について説明します。参照のためにそれを共有してください。詳細は次のとおりです。
カクテルの並べ替え、つまり、方向性のバブルソート、カクテルのかき混ぜるソート、かき混ぜるソーティング(選択選別の変形と見なすこともできます)、波紋の選別、前後の選別、またはハッピーアワーの選別は、バブルソートの変形です。このアルゴリズムとバブルソートの違いは、並べ替えの場合、シーケンス内の2つの方向にソートされることです。
バブルソートとは異なります:
カクテルソートは、バブルソートのわずかな変形と同等です。違いは低から高、そして高から低いものであり、バブルソートはシーケンス内の各要素のみを低から高に比較します。バブルソートは一方向(低から高へ)からのみ比較され、ループごとに1つのアイテムのみを移動するため、彼はバブルソートよりもわずかに優れたパフォーマンスを得ることができます。
シーケンス(2,3,4,5,1)を例にとると、カクテルソートには、ソートを完了するためにシーケンスへの1回の訪問のみが必要ですが、バブルソートを使用する場合は4回だけです。 ただし、乱雑なシーケンスの状態では、カクテルソートとバブルソートの効率は非常に貧弱です。
最悪の時間の複雑さo(n^2)
最適な時間の複雑さo(n)
平均時間の複雑さo(n^2)
カクテルソートのダイナミックな画像は次のとおりです。
コード分析:
パッケージcom.baobaotao.test; = array.length; // loop length/2回(int i = 0; i <length/2; i ++){for(int j = i; j <length-i-1; j ++){if(array [ j]> array [j+1]){swap(array、j、j+1)}}} <配列[j-1]){swap(array、j-1、j)}} / ** * cocktail(flags)@param array static void cocatailsortflag(int [] array){int length = array.length、flag2 = true; ; flag2 = true; = false; ; flag2 = false;着信b * @param c c */ public static void swap(int] a、int b、int c){in int temp = 0; b]> a [b] = a [c] = temp; void printarr(int [] array){int c:array){system.out.print(c + "")} out.println(); int [] number = {11,95,45,15,78,84,51,24,12}; cocatailsort(number);結果分析:
11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95 11 12 15 24 45 51 78 84 95 **************** * *** 11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95
カクテルがソートされる回数は、通常のバブルソートの回数よりもはるかに少ないことがわかります。 4回しかかかりません。ロゴカクテルソートの改良バージョンは、ソートを完了するのに3回しかかかりません。
この記事がみんなのJavaプログラミングに役立つことを願っています。