Javaデータ構造(一)---並べ替え(三)並べ替え
3156 ワード
一、並べ替え
は、分割の思想1、ステップサイズ(gap)2、ステップサイズによってデータ(固定長データ+残データ)3、小領域で並べ替えられます。
は、分割の思想1、ステップサイズ(gap)2、ステップサイズによってデータ(固定長データ+残データ)3、小領域で並べ替えられます。
public int[] mergeSort(int[] A, int n) {
for (int gap = 1; gap < A.length; gap = 2 * gap)
MergePass(A, gap, n);
return A;
}
public void MergePass(int[] A, int gap, int length) {
int i = 0;
// gap
for (i = 0; i + 2 * gap < length; i += 2 * gap) {
Merge(A, i, i + gap - 1, i + 2 * gap - 1);
}
// , gap
if (i + gap < length) {
Merge(A, i, i + gap - 1, length-1);
}
}
/**
, ,
*/
public void Merge(int[] A, int low,int mid,int high){
int i=low;
int j=mid+1;
int k=0;
int[] A2=new int[high-low+1];
while(i<=mid && j<=high){
if(A[i]<=A[j]){
A2[k]=A[i];
k++;
i++;
}else{
A2[k]=A[j];
k++;
j++;
}
}
while(i<=mid){
A2[k]=A[i];
k++;
i++;
}
while(j<=high){
A2[k]=A[j];
k++;
j++;
}
for(k=0,i=low;i<=high;i++,k++){
A[i]=A2[k];
}
}