例题:
对a[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48}排序
要求从小到大排列。
介绍:
这个应该是一种非常简单的排序算法。
计数排序,顾名思义就是查一下有几个呗。
思路:
我们应该考虑给他们留一个多大的内存用来储存数字的数量
定义两个变量min,max分别记录数组的最小值和最大值
定义一个(max-min+1)长度的数组,
遍历原数组,在其数字对应的位置+1表示计数+1;
难点:
对应关系的计算,不算难,瞅一下代码就会了。
package 日常练习;
public class 计数排序 {
public static int a[] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
public static void main(String[] args) {
int min=a[0];
int max=a[0];
for(int i=1;i<a.length;i++)
{
min=a[i]<min?a[i]:min;
max=a[i]>max?a[i]:max;
}
int b[]=new int [max-min+1];
for(int i=0;i<a.length;i++)
{
b[a[i]-min]++;
}
for(int i=0;i<b.length;i++)
{
for(int j=0;j<b[i];j++)
{
System.out.print(i+min+" ");
}
}
}
}