この名前を聞くとクイックソートが非常に速く感じる場合がありますが、アルゴリズム時間の複雑さの最悪の場合は挿入ソートと同じです。迅速な種類になるのは、その平均効率がヒープの並べ替えよりも高速であるためです。元の配列に新しいストレージスペースを直接開く必要があります。クイックソートのアイデアは非常にシンプルです。これは、キーワードKを選択して、元の配列をG1とG2のすべての要素に分割することです。 kにそれぞれg1とg2を並べ替えます。コードのソートメソッドは、今すぐステートメントの説明です。重要なアルゴリズムは、Kの位置を見つけて、元の配列を2つの部分に分割することです。メソッドの取得は、クイックソートの中核です。彼の実装の原則は、挿入並べ替えに少し似ていますが、少し似ています。マップのエンド位置にある要素は、エンド要素をエンド要素と比較することにより、iとjの2つの部分に分割されますjはコアよりも大きい私の前にその小数を置いてください。このようにループした後、Start to End-1は最終的にコアを中央に置き、コア位置を分割線に戻します。
コードコピーは次のとおりです。
パブリッククラスQuickSort {
public int getplocation(int [] map、int start、int end){
int core = map [end];
int i = start-1;
for(int j = start; j <= end-1; j ++){
if(map [j] <= core){
i ++;
int cache = map [j];
map [j] = map [i];
map [i] = cache;
}
}
i ++;
map [end] = map [i];
map [i] = core;
私を返します。
}
public void sort(int [] map、int start、int end){
if(start <end){
int p = getPlocation(map、start、end);
sort(map、start、p-1);
sort(map、p+1、end);
}
}
public static void main(string [] args){
int [] map = new int [] {4,1,5,3,7,12,65,7};
QuickSort QS = new QuickSort();
qs.sort(map、0、map.length-1);
for(int i = 0; i <map.length; i ++){
system.out.println(map [i]);
}
}
}