JAVAヒルソートコード
ヒルアルゴリズム学習使用コードは以下の通りである.
ヒルアルゴリズムはツールクラスとして以下のコードを使用する
import untils.AlgorithmUtils;
import java.util.Arrays;
/**
*
*
* , , 。 。
*
* :
*
* , ,
* ,
* , “ ” , 。
*
*/
public class Shell {
/**
*
*
* @param arr
*/
public static void studyShellSort(int[] arr) {
System.out.print(" : ");
System.out.println(Arrays.toString(arr));
System.out.println(" shell :--Start-- ");
int length = arr.length;
for (int len = length / 2; len > 0; len /= 2) {
boolean flag = true;
System.out.println(" : " + len);
for (int i = len; i < length; i++) {
int c = 0;
for (int j = i - len; j >= 0; c = j -= len) {
System.out.println(c + " : = " + j + "; = " + arr[j] + "; ( + ) = " + (j + len) + "; ( + ) = " + arr[j + len]);
System.out.println(" :");
System.out.println(Arrays.toString(arr));
if (arr[j] > arr[j + len]) {
AlgorithmUtils.swap(arr, j, j + len);
System.out.println(" , :");
System.out.println(Arrays.toString(arr));
} else {
System.out.println(" , ");
}
}
System.out.println();
}
//
System.out.println(" : " + Arrays.toString(arr));
}
System.out.println("shell :--END-- ");
}
}
public class AlgorithmUtils {
public static void swap(int[] arr, int a, int b) {
arr[a] = arr[a] + arr[b];
arr[b] = arr[a] - arr[b];
arr[a] = arr[a] - arr[b];
}
}
ヒルアルゴリズムはツールクラスとして以下のコードを使用する
import untils.AlgorithmUtils;
public class Shell {
/**
*
* @param arr
* @return
*/
public static int[] shellSort(int[] arr) {
int length = arr.length;
for (int len = length / 2; len > 0; len /= 2) {
for (int i = len; i < length; i++) {
for (int j = i - len; j >= 0; j -= len) {
if (arr[j] > arr[j + len]) {
AlgorithmUtils.swap(arr, j, j + len);
}
}
}
}
return arr;
}
}