计数算法学习使用代码如下
import utils.AlgorithmUtils;
import java.util.Arrays;
public class Count {
public static int[] countSort(int[] arr) {
System.out.println("原数组信息: " + Arrays.toString(arr));
if (arr == null || arr.length == 0) {
return null;
}
int len = arr.length;
int min = AlgorithmUtils.min(arr);
int max = AlgorithmUtils.max(arr);
int[] auxiliary = new int[max - min + 1];
for (int i = 0; i < len; i++) {
auxiliary[arr[i] - min]++;
}
System.out.println("辅助数组信息: " + Arrays.toString(auxiliary));
int index = 0;
for (int i = 0; i < auxiliary.length; i++) {
if (auxiliary[i] > 0) {
while (auxiliary[i]-- > 0) {
arr[index] = i + min;
index++;
}
}
}
return arr;
}
}
package utils;
public class AlgorithmUtils {
public static void swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
public static int min(int[] arr) {
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
public static int max(int[] arr) {
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
}