天天看点

十大排序算法-------【计数排序】详解(Java源码)

  1. 算法描述
  1. 找出待排序的数组中最大和最小的元素;
  2. 统计数组中每个值为i的元素出现的次数,存入数组C的第i项;
  3. 对所有的计数累加(从数组C中的第一个元素开始,每一项和前一项相加);
  4. 反向填充目标数组:将每个元素i放在新数组的第C(i)项,每次放一个元素就将C(i)减去1。
  1. 代码:
private static void jiShu(int[] arrays) {

        int min = arrays[0], max = arrays[0];

        for (int i = 0; i < arrays.length; i++) {

               min = min > arrays[i] ? arrays[i] : min;

               max = max < arrays[i] ? arrays[i] : max;

        }



        int[] jiShuArrays = new int[max + 1];

        for (int i = 0; i < arrays.length; i++) {

               int value = arrays[i];

               jiShuArrays[value] += 1;

        }



        for (int i = 0, a = 0; i < jiShuArrays.length; i++) {

               if (jiShuArrays[i] > 0) {

                      arrays[a++] = i;

               }

        }

}      
  1. 算法分析