import java.util.*;
public class CountingSort
{
public int[] countingSort(int[] A, int n)
{
int[] array = createArray(A, n);
for(int i=0;i<n;i++)
{
int index = A[i];
//统计重复数
if(array[index] == Integer.MAX_VALUE)
{
array[index] = 1;
}
else
{
array[index] = array[index] + 1;
}
}
int[] result = new int[n];
int index = 0;
for(int i=0;i<array.length;i++)
{
while(array[i] > 0 && array[i] != Integer.MAX_VALUE)
{
result[index++] = i;
array[i]--;
}
}
return result;
}
private int[] createArray(int[] A, int n)
{
int max = Integer.MIN_VALUE;
for(int i=0;i<n;i++)
{
if (A[i] > max)
{
max = A[i];
}
}
int[] array = new int[max+1];
for(int i=0;i<array.length;i++)
{
array[i] = Integer.MAX_VALUE;
}
return array;
}
}
计数排序(其实思想是桶排序)
最新推荐文章于 2023-04-27 10:55:37 发布