计数排序标题Counting Sort
6/10
把待存数据存到和数据值数组下标相等的存储单元中。由于数组下标本身有序,故数据有序。若有重复数据元素,引入计数值:记录待排序集合中,和数组下标值相同的待排序元素的个数。数组元素成为计数器,遇到相同的数据,计数器++
import java.util.Arrays;
//对1~100的数据集合排序
public class sort {
public static void main(String[] args) {
int[] arr = {6, 21, 13, 45, 21, 6, 78, 66};
System.out.println(Arrays.toString(arr));
countingSort(arr);//以字符串输出
System.out.println(Arrays.toString(arr));
}
//计数排序
//1.根据题意创建包含101个个元素的数组countIndex
public static void countingSort(int[] arr) {
int[] countIndex = new int[101];//初值都为0
//2.遍历待排序集合,在countIndex中对待排序的数据进行计数
for (int i = 0; i < arr.length; i++) {
countIndex[arr[i]]++;//生成计数数组
}
//3.在原数组中排序
int flag = 0;
for (int i = 0; i < countIndex.length; i++) {
for (int j = countIndex[i]; j > 0; j--) {//countIndex中输出数组元素个下标值
arr[flag] = i;
flag++;
}
}
}
}